{
  "type": "object",
  "shared": [
    {
      "type": "alternatives",
      "flags": {
        "id": "condition"
      },
      "matches": [
        {
          "schema": {
            "type": "alternatives",
            "flags": {
              "id": "boolean"
            },
            "matches": [
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": "all"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 3
                      }
                    }
                  ],
                  "items": [
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "boolean"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        "all"
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": "any"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 3
                      }
                    }
                  ],
                  "items": [
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "boolean"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        "any"
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": "!"
                  },
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 2
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        "!"
                      ]
                    },
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "boolean"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": "=="
                  },
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 3
                      }
                    }
                  ],
                  "items": [
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        "=="
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": "!="
                  },
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 3
                      }
                    }
                  ],
                  "items": [
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        "!="
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": "<"
                  },
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 3
                      }
                    }
                  ],
                  "items": [
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        "<"
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": "<="
                  },
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 3
                      }
                    }
                  ],
                  "items": [
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        "<="
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": ">"
                  },
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 3
                      }
                    }
                  ],
                  "items": [
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        ">"
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": ">="
                  },
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 3
                      }
                    }
                  ],
                  "items": [
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        ">="
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "flags": {
                    "id": "in"
                  },
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "in"
                      ]
                    },
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    },
                    {
                      "type": "array",
                      "items": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "has"
                      ]
                    },
                    {
                      "type": "string",
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:width|team|locale|language|type|title|mode\\.(?:static|plain|print)|(?:chart\\.(?:title|organizationId|type|language|metadata\\.(?:(?:custom|describe|annotate)\\.[a-zA-Z][a-zA-Z0-9-_]*[a-zA-Z0-9]|publish\\.(?:blocks\\.(?:download-image|download-pdf|download-svg|embed|get-the-data|logo\\.(?:enabled|id))|force-attribution))))|(?:flags\\.(?:dark|logo|logoId|map2svg|plain|search|static|svgonly|transparent))|(?:(?:blocks|custom|describe|publish)\\.[a-zA-Z][a-zA-Z0-9-_.]*[a-zA-Z0-9]))$/"
                          }
                        }
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "link",
                  "link": {
                    "ref": {
                      "path": [
                        "condition",
                        "value"
                      ],
                      "ancestor": "root"
                    }
                  }
                }
              }
            ]
          }
        },
        {
          "schema": {
            "type": "alternatives",
            "flags": {
              "id": "value"
            },
            "matches": [
              {
                "schema": {
                  "type": "number"
                }
              },
              {
                "schema": {
                  "type": "string"
                }
              },
              {
                "schema": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                }
              },
              {
                "schema": {
                  "type": "array",
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 2
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "get"
                      ]
                    },
                    {
                      "type": "string",
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:width|team|locale|language|type|title|mode\\.(?:static|plain|print)|(?:chart\\.(?:title|organizationId|type|language|metadata\\.(?:(?:custom|describe|annotate)\\.[a-zA-Z][a-zA-Z0-9-_]*[a-zA-Z0-9]|publish\\.(?:blocks\\.(?:download-image|download-pdf|download-svg|embed|get-the-data|logo\\.(?:enabled|id))|force-attribution))))|(?:flags\\.(?:dark|logo|logoId|map2svg|plain|search|static|svgonly|transparent))|(?:(?:blocks|custom|describe|publish)\\.[a-zA-Z][a-zA-Z0-9-_.]*[a-zA-Z0-9]))$/"
                          }
                        }
                      ]
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 2
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "length"
                      ]
                    },
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ]
                }
              },
              {
                "schema": {
                  "type": "array",
                  "rules": [
                    {
                      "name": "length",
                      "args": {
                        "limit": 2
                      }
                    }
                  ],
                  "ordered": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "stripHtml"
                      ]
                    },
                    {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "condition",
                            "value"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    },
    {
      "type": "object",
      "flags": {
        "id": "bylineStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "containerStyles"
      },
      "keys": {
        "layout": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "flex-row",
            "flex-column",
            "inline"
          ]
        },
        "flexWrap": {
          "type": "string",
          "flags": {
            "default": "nowrap",
            "only": true
          },
          "allow": [
            "nowrap",
            "wrap",
            "wrap-reverse"
          ],
          "whens": [
            {
              "ref": {
                "path": [
                  "layout"
                ]
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true,
                  "presence": "required"
                },
                "allow": [
                  {
                    "override": true
                  },
                  "inline"
                ]
              },
              "then": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ]
        },
        "textAlign": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "left",
            "right",
            "center",
            "justify",
            "start",
            "end"
          ]
        },
        "justify": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "center",
            "end",
            "stretch",
            "flex-end",
            "flex-start",
            "inherit",
            "initial",
            "normal",
            "space-between",
            "space-around",
            "space-evenly"
          ],
          "whens": [
            {
              "ref": {
                "path": [
                  "layout"
                ]
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true,
                  "presence": "required"
                },
                "allow": [
                  {
                    "override": true
                  },
                  "inline"
                ]
              },
              "then": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ]
        },
        "alignItems": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "center",
            "end",
            "stretch",
            "flex-end",
            "flex-start",
            "inherit",
            "initial",
            "normal",
            "baseline",
            "first baseline",
            "last baseline"
          ],
          "whens": [
            {
              "ref": {
                "path": [
                  "layout"
                ]
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true,
                  "presence": "required"
                },
                "allow": [
                  {
                    "override": true
                  },
                  "inline"
                ]
              },
              "then": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ]
        },
        "gap": {
          "type": "alternatives",
          "flags": {
            "description": "if flexWrap is nowrap, gap is a single number, otherwise an object for row and column gaps"
          },
          "whens": [
            {
              "ref": {
                "path": [
                  "layout"
                ]
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true,
                  "presence": "required"
                },
                "allow": [
                  {
                    "override": true
                  },
                  "inline"
                ]
              },
              "then": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ],
          "matches": [
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                },
                "whens": [
                  {
                    "ref": {
                      "path": [
                        "flexWrap"
                      ]
                    },
                    "is": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        {
                          "override": true
                        },
                        "nowrap"
                      ]
                    },
                    "otherwise": {
                      "type": "any",
                      "flags": {
                        "presence": "forbidden"
                      }
                    }
                  }
                ]
              }
            },
            {
              "schema": {
                "type": "object",
                "whens": [
                  {
                    "ref": {
                      "path": [
                        "flexWrap"
                      ]
                    },
                    "is": {
                      "type": "any",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        {
                          "override": true
                        },
                        "nowrap"
                      ]
                    },
                    "then": {
                      "type": "any",
                      "flags": {
                        "presence": "forbidden"
                      }
                    }
                  }
                ],
                "keys": {
                  "row": {
                    "type": "number",
                    "flags": {
                      "unit": "px"
                    },
                    "rules": [
                      {
                        "name": "min",
                        "args": {
                          "limit": 0
                        }
                      },
                      {
                        "name": "max",
                        "args": {
                          "limit": 100
                        }
                      }
                    ],
                    "preferences": {
                      "convert": false
                    }
                  },
                  "column": {
                    "type": "number",
                    "flags": {
                      "unit": "px"
                    },
                    "rules": [
                      {
                        "name": "min",
                        "args": {
                          "limit": 0
                        }
                      },
                      {
                        "name": "max",
                        "args": {
                          "limit": 100
                        }
                      }
                    ],
                    "preferences": {
                      "convert": false
                    }
                  }
                }
              }
            }
          ]
        },
        "separator": {
          "type": "object",
          "whens": [
            {
              "ref": {
                "path": [
                  "layout"
                ]
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true
                },
                "allow": [
                  {
                    "override": true
                  },
                  "inline"
                ]
              },
              "otherwise": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ],
          "keys": {
            "text": {
              "type": "string",
              "flags": {
                "default": "\"•\"",
                "description": "For customizing the \"•\" separator between footer blocks. make sure to wrap the separator in single quotes and prepend an encoded whitespace, e.g. '\\00a0•'"
              }
            },
            "margin": {
              "type": "string",
              "flags": {
                "unit": "cssMargin",
                "default": "0 0.2rem"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "positionTop": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "links": {
          "type": "link",
          "link": {
            "ref": {
              "path": [
                "_links"
              ],
              "ancestor": "root"
            }
          }
        },
        "background": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "typography": {
          "type": "link",
          "link": {
            "ref": {
              "path": [
                "_typography"
              ],
              "ancestor": "root"
            }
          }
        },
        "margin": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "margins in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "padding": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "padding in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "border": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssBorder"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                      "options": {
                        "name": "css border"
                      }
                    }
                  }
                ],
                "examples": [
                  "1px dashed #cc3399"
                ]
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder",
                        "description": "css border for each side"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        "borderRadius": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number"
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "corner"
                      },
                      "allow": [
                        "topLeft",
                        "topRight",
                        "bottomLeft",
                        "bottomRight"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "css border radius for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "width": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a fixed width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "maxWidth": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a max-width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "minWidth": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a min-width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "flexGrow": {
          "type": "number",
          "flags": {
            "description": "for blocks or containers inside flex containers"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            }
          ]
        },
        "alignSelf": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "center",
            "end",
            "stretch",
            "flex-end",
            "flex-start",
            "inherit",
            "initial",
            "normal",
            "baseline",
            "first baseline",
            "last baseline"
          ]
        },
        "whiteSpace": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "normal",
            "nowrap",
            "pre",
            "pre-wrap",
            "pre-line"
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "textStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "descriptionStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "downloadImageStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "downloadPDFStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "downloadSVGStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "embedStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "filterUIStyles"
      },
      "keys": {
        "tabs": {
          "type": "object",
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "letterSpacing": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": -99
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "lineHeight": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textTransform": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "uppercase",
                "capitalize",
                "lowercase",
                "full-width",
                "none"
              ]
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "active": {
              "type": "object",
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "fontWeight": {
                  "type": "any",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "bold",
                    "bolder",
                    "light",
                    "lighter",
                    "normal",
                    "initial",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                "border": {
                  "type": "object",
                  "keys": {
                    "bottom": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "left": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "right": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "top": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                }
              }
            },
            "hover": {
              "type": "object",
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "fontWeight": {
                  "type": "any",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "bold",
                    "bolder",
                    "light",
                    "lighter",
                    "normal",
                    "initial",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                }
              }
            },
            "border": {
              "type": "object",
              "keys": {
                "bottom": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "left": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "right": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "top": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "height": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "select": {
          "type": "object",
          "keys": {
            "border": {
              "type": "string",
              "flags": {
                "unit": "cssBorder"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                    "options": {
                      "name": "css border"
                    }
                  }
                }
              ],
              "examples": [
                "1px dashed #cc3399"
              ]
            },
            "borderRadius": {
              "type": "string"
            },
            "padding": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textColor": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            }
          }
        },
        "point": {
          "type": "object",
          "keys": {
            "buttons": {
              "type": "object",
              "keys": {
                "background": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "border": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "fontSize": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "labelColor": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor",
                    "description": "Color of text"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "active": {
                  "type": "object",
                  "keys": {
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "border": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                },
                "hover": {
                  "type": "object",
                  "keys": {
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "border": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                }
              }
            },
            "line": {
              "type": "object",
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                }
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "getTheDataStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "headlineStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "imageStyles"
      },
      "dependencies": [
        {
          "rel": "xor",
          "peers": [
            "width",
            "height"
          ]
        }
      ],
      "keys": {
        "height": {
          "type": "number",
          "flags": {
            "unit": "px",
            "description": "height of image"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 500
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "width": {
          "type": "number",
          "flags": {
            "unit": "px",
            "description": "width of iamge"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 500
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "background": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "margin": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "margins in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "padding": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "padding in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "border": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssBorder"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                      "options": {
                        "name": "css border"
                      }
                    }
                  }
                ],
                "examples": [
                  "1px dashed #cc3399"
                ]
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder",
                        "description": "css border for each side"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        "borderRadius": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number"
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "corner"
                      },
                      "allow": [
                        "topLeft",
                        "topRight",
                        "bottomLeft",
                        "bottomRight"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "css border radius for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "flexGrow": {
          "type": "number",
          "flags": {
            "description": "for blocks or containers inside flex containers"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            }
          ]
        },
        "alignSelf": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "center",
            "end",
            "stretch",
            "flex-end",
            "flex-start",
            "inherit",
            "initial",
            "normal",
            "baseline",
            "first baseline",
            "last baseline"
          ]
        },
        "whiteSpace": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "normal",
            "nowrap",
            "pre",
            "pre-wrap",
            "pre-line"
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "logoStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles",
          "requireType": "logo"
        }
      ],
      "keys": {
        "image": {
          "type": "object",
          "flags": {
            "description": "logo image styles"
          },
          "keys": {
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "margin": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { top, left, right, bottom }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssMargin"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                          "options": {
                            "name": "css margin"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "5px 10px",
                      "10px auto 5px"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "number",
                    "flags": {
                      "unit": "px"
                    },
                    "rules": [
                      {
                        "name": "min",
                        "args": {
                          "limit": 0
                        }
                      },
                      {
                        "name": "max",
                        "args": {
                          "limit": 100
                        }
                      }
                    ],
                    "preferences": {
                      "convert": false
                    }
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "side"
                          },
                          "allow": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "rule": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "margins in pixels for each side"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "padding": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { top, left, right, bottom }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssMargin"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                          "options": {
                            "name": "css margin"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "5px 10px",
                      "10px auto 5px"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "number",
                    "flags": {
                      "unit": "px"
                    },
                    "rules": [
                      {
                        "name": "min",
                        "args": {
                          "limit": 0
                        }
                      },
                      {
                        "name": "max",
                        "args": {
                          "limit": 100
                        }
                      }
                    ],
                    "preferences": {
                      "convert": false
                    }
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "side"
                          },
                          "allow": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "rule": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "padding in pixels for each side"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "border": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { top, left, right, bottom }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssBorder"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                          "options": {
                            "name": "css border"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "1px dashed #cc3399"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "side"
                          },
                          "allow": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "rule": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder",
                            "description": "css border for each side"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "borderRadius": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssMargin"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                          "options": {
                            "name": "css margin"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "5px 10px",
                      "10px auto 5px"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "number"
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "corner"
                          },
                          "allow": [
                            "topLeft",
                            "topRight",
                            "bottomLeft",
                            "bottomRight"
                          ]
                        },
                        "rule": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "css border radius for each side"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "flexGrow": {
              "type": "number",
              "flags": {
                "description": "for blocks or containers inside flex containers"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                }
              ]
            },
            "alignSelf": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "center",
                "end",
                "stretch",
                "flex-end",
                "flex-start",
                "inherit",
                "initial",
                "normal",
                "baseline",
                "first baseline",
                "last baseline"
              ]
            }
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "mapAttributionStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "menuStyles"
      },
      "keys": {
        "button": {
          "type": "object",
          "keys": {
            "iconColor": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "margin": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { top, left, right, bottom }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssMargin"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                          "options": {
                            "name": "css margin"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "5px 10px",
                      "10px auto 5px"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "number",
                    "flags": {
                      "unit": "px"
                    },
                    "rules": [
                      {
                        "name": "min",
                        "args": {
                          "limit": 0
                        }
                      },
                      {
                        "name": "max",
                        "args": {
                          "limit": 100
                        }
                      }
                    ],
                    "preferences": {
                      "convert": false
                    }
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "side"
                          },
                          "allow": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "rule": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "margins in pixels for each side"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "padding": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { top, left, right, bottom }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssMargin"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                          "options": {
                            "name": "css margin"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "5px 10px",
                      "10px auto 5px"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "number",
                    "flags": {
                      "unit": "px"
                    },
                    "rules": [
                      {
                        "name": "min",
                        "args": {
                          "limit": 0
                        }
                      },
                      {
                        "name": "max",
                        "args": {
                          "limit": 100
                        }
                      }
                    ],
                    "preferences": {
                      "convert": false
                    }
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "side"
                          },
                          "allow": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "rule": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "padding in pixels for each side"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "border": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { top, left, right, bottom }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssBorder"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                          "options": {
                            "name": "css border"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "1px dashed #cc3399"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "side"
                          },
                          "allow": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "rule": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder",
                            "description": "css border for each side"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "borderRadius": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssMargin"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                          "options": {
                            "name": "css margin"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "5px 10px",
                      "10px auto 5px"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "number"
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "corner"
                          },
                          "allow": [
                            "topLeft",
                            "topRight",
                            "bottomLeft",
                            "bottomRight"
                          ]
                        },
                        "rule": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "css border radius for each side"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        },
        "links": {
          "type": "link",
          "link": {
            "ref": {
              "path": [
                "_links"
              ],
              "ancestor": "root"
            }
          }
        },
        "background": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "typography": {
          "type": "link",
          "link": {
            "ref": {
              "path": [
                "_typography"
              ],
              "ancestor": "root"
            }
          }
        },
        "margin": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "margins in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "padding": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "padding in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "border": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssBorder"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                      "options": {
                        "name": "css border"
                      }
                    }
                  }
                ],
                "examples": [
                  "1px dashed #cc3399"
                ]
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder",
                        "description": "css border for each side"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        "borderRadius": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number"
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "corner"
                      },
                      "allow": [
                        "topLeft",
                        "topRight",
                        "bottomLeft",
                        "bottomRight"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "css border radius for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "width": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a fixed width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "maxWidth": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a max-width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "minWidth": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a min-width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "flexGrow": {
          "type": "number",
          "flags": {
            "description": "for blocks or containers inside flex containers"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            }
          ]
        },
        "alignSelf": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "center",
            "end",
            "stretch",
            "flex-end",
            "flex-start",
            "inherit",
            "initial",
            "normal",
            "baseline",
            "first baseline",
            "last baseline"
          ]
        },
        "whiteSpace": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "normal",
            "nowrap",
            "pre",
            "pre-wrap",
            "pre-line"
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "notesStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "rectangleStyles"
      },
      "keys": {
        "width": {
          "type": "number",
          "flags": {
            "unit": "px"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 100
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "height": {
          "type": "number",
          "flags": {
            "unit": "px"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 100
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "background": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "ruleHTMLStyles"
      },
      "keys": {
        "color": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "style": {
          "type": "string",
          "flags": {
            "unit": "cssBorderStyle",
            "default": "solid"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:solid|dashed|dotted|double)$/",
                "options": {
                  "name": "css border style"
                }
              }
            }
          ],
          "examples": [
            "solid",
            "dashed"
          ]
        },
        "width": {
          "type": "number",
          "flags": {
            "unit": "px",
            "description": "stroke width"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 100
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "margin": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "margins in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "ruleSVGStyles"
      },
      "keys": {
        "strokeDasharray": {
          "type": "string",
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                "options": {
                  "name": "stroke-dasharray"
                }
              }
            }
          ],
          "examples": [
            "5 10",
            "3%,2%,1%"
          ]
        },
        "strokeLinecap": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "butt",
            "round",
            "square"
          ]
        },
        "color": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "width": {
          "type": "number",
          "flags": {
            "unit": "px",
            "description": "stroke width"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 100
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "margin": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "margins in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "shareToolsStyles"
      },
      "keys": {
        "background": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "border": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssBorder"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                      "options": {
                        "name": "css border"
                      }
                    }
                  }
                ],
                "examples": [
                  "1px dashed #cc3399"
                ]
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder",
                        "description": "css border for each side"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        "margin": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "margins in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "padding": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "padding in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "borderRadius": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number"
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "corner"
                      },
                      "allow": [
                        "topLeft",
                        "topRight",
                        "bottomLeft",
                        "bottomRight"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "css border radius for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "flexGrow": {
          "type": "number",
          "flags": {
            "description": "for blocks or containers inside flex containers"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            }
          ]
        },
        "layout": {
          "type": "string",
          "flags": {
            "default": "column"
          },
          "allow": [
            "row",
            "column"
          ]
        },
        "gap": {
          "type": "number",
          "flags": {
            "unit": "px",
            "default": 5
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 100
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "buttons": {
          "type": "object",
          "flags": {
            "description": "button styles"
          },
          "keys": {
            "base": {
              "type": "object",
              "keys": {
                "width": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "icon image width"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor",
                    "description": "default icon color"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "background": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "border": {
                  "type": "alternatives",
                  "flags": {
                    "description": "either a css string or an object with { top, left, right, bottom }"
                  },
                  "matches": [
                    {
                      "schema": {
                        "type": "string",
                        "flags": {
                          "unit": "cssBorder"
                        },
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                              "options": {
                                "name": "css border"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "1px dashed #cc3399"
                        ]
                      }
                    },
                    {
                      "schema": {
                        "type": "object",
                        "patterns": [
                          {
                            "schema": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "unit": "side"
                              },
                              "allow": [
                                "top",
                                "right",
                                "bottom",
                                "left"
                              ]
                            },
                            "rule": {
                              "type": "string",
                              "flags": {
                                "unit": "cssBorder",
                                "description": "css border for each side"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                    "options": {
                                      "name": "css border"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "1px dashed #cc3399"
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "borderRadius": {
                  "type": "alternatives",
                  "flags": {
                    "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
                  },
                  "matches": [
                    {
                      "schema": {
                        "type": "string",
                        "flags": {
                          "unit": "cssMargin"
                        },
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                              "options": {
                                "name": "css margin"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "5px 10px",
                          "10px auto 5px"
                        ]
                      }
                    },
                    {
                      "schema": {
                        "type": "number"
                      }
                    },
                    {
                      "schema": {
                        "type": "object",
                        "patterns": [
                          {
                            "schema": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "unit": "corner"
                              },
                              "allow": [
                                "topLeft",
                                "topRight",
                                "bottomLeft",
                                "bottomRight"
                              ]
                            },
                            "rule": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "css border radius for each side"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "padding": {
                  "type": "alternatives",
                  "flags": {
                    "description": "either a css string or an object with { top, left, right, bottom }"
                  },
                  "matches": [
                    {
                      "schema": {
                        "type": "string",
                        "flags": {
                          "unit": "cssMargin"
                        },
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                              "options": {
                                "name": "css margin"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "5px 10px",
                          "10px auto 5px"
                        ]
                      }
                    },
                    {
                      "schema": {
                        "type": "number",
                        "flags": {
                          "unit": "px"
                        },
                        "rules": [
                          {
                            "name": "min",
                            "args": {
                              "limit": 0
                            }
                          },
                          {
                            "name": "max",
                            "args": {
                              "limit": 100
                            }
                          }
                        ],
                        "preferences": {
                          "convert": false
                        }
                      }
                    },
                    {
                      "schema": {
                        "type": "object",
                        "patterns": [
                          {
                            "schema": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "unit": "side"
                              },
                              "allow": [
                                "top",
                                "right",
                                "bottom",
                                "left"
                              ]
                            },
                            "rule": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "padding in pixels for each side"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "hover": {
                  "type": "object",
                  "flags": {
                    "description": "generic button styles on hover"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "default icon hover color"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "border": {
                      "type": "alternatives",
                      "flags": {
                        "description": "either a css string or an object with { top, left, right, bottom }"
                      },
                      "matches": [
                        {
                          "schema": {
                            "type": "string",
                            "flags": {
                              "unit": "cssBorder"
                            },
                            "rules": [
                              {
                                "name": "pattern",
                                "args": {
                                  "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                  "options": {
                                    "name": "css border"
                                  }
                                }
                              }
                            ],
                            "examples": [
                              "1px dashed #cc3399"
                            ]
                          }
                        },
                        {
                          "schema": {
                            "type": "object",
                            "patterns": [
                              {
                                "schema": {
                                  "type": "string",
                                  "flags": {
                                    "only": true,
                                    "unit": "side"
                                  },
                                  "allow": [
                                    "top",
                                    "right",
                                    "bottom",
                                    "left"
                                  ]
                                },
                                "rule": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssBorder",
                                    "description": "css border for each side"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                        "options": {
                                          "name": "css border"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "1px dashed #cc3399"
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            }
          },
          "patterns": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "only": true,
                  "unit": "tool"
                },
                "allow": [
                  "twitter",
                  "facebook",
                  "linkedin",
                  "downloadCSV",
                  "email",
                  "print"
                ]
              },
              "rule": {
                "type": "object",
                "keys": {
                  "color": {
                    "type": "string",
                    "flags": {
                      "unit": "cssColor",
                      "description": "tool-specific icon color"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                          "options": {
                            "name": "css color"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "#cc0044",
                      "rgba(200,10,45,0.6)"
                    ]
                  },
                  "border": {
                    "type": "alternatives",
                    "flags": {
                      "description": "either a css string or an object with { top, left, right, bottom }"
                    },
                    "matches": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        }
                      },
                      {
                        "schema": {
                          "type": "object",
                          "patterns": [
                            {
                              "schema": {
                                "type": "string",
                                "flags": {
                                  "only": true,
                                  "unit": "side"
                                },
                                "allow": [
                                  "top",
                                  "right",
                                  "bottom",
                                  "left"
                                ]
                              },
                              "rule": {
                                "type": "string",
                                "flags": {
                                  "unit": "cssBorder",
                                  "description": "css border for each side"
                                },
                                "rules": [
                                  {
                                    "name": "pattern",
                                    "args": {
                                      "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                      "options": {
                                        "name": "css border"
                                      }
                                    }
                                  }
                                ],
                                "examples": [
                                  "1px dashed #cc3399"
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "background": {
                    "type": "string",
                    "flags": {
                      "unit": "cssColor"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                          "options": {
                            "name": "css color"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "#cc0044",
                      "rgba(200,10,45,0.6)"
                    ]
                  },
                  "hover": {
                    "type": "object",
                    "flags": {
                      "description": "tool-specific button styles on hover"
                    },
                    "keys": {
                      "color": {
                        "type": "string",
                        "flags": {
                          "unit": "cssColor",
                          "description": "tool-specific icon color on hover"
                        },
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                              "options": {
                                "name": "css color"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "#cc0044",
                          "rgba(200,10,45,0.6)"
                        ]
                      },
                      "border": {
                        "type": "alternatives",
                        "flags": {
                          "description": "either a css string or an object with { top, left, right, bottom }"
                        },
                        "matches": [
                          {
                            "schema": {
                              "type": "string",
                              "flags": {
                                "unit": "cssBorder"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                    "options": {
                                      "name": "css border"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "1px dashed #cc3399"
                              ]
                            }
                          },
                          {
                            "schema": {
                              "type": "object",
                              "patterns": [
                                {
                                  "schema": {
                                    "type": "string",
                                    "flags": {
                                      "only": true,
                                      "unit": "side"
                                    },
                                    "allow": [
                                      "top",
                                      "right",
                                      "bottom",
                                      "left"
                                    ]
                                  },
                                  "rule": {
                                    "type": "string",
                                    "flags": {
                                      "unit": "cssBorder",
                                      "description": "css border for each side"
                                    },
                                    "rules": [
                                      {
                                        "name": "pattern",
                                        "args": {
                                          "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                          "options": {
                                            "name": "css border"
                                          }
                                        }
                                      }
                                    ],
                                    "examples": [
                                      "1px dashed #cc3399"
                                    ]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "background": {
                        "type": "string",
                        "flags": {
                          "unit": "cssColor"
                        },
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                              "options": {
                                "name": "css color"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "#cc0044",
                          "rgba(200,10,45,0.6)"
                        ]
                      }
                    }
                  }
                }
              }
            }
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "sourceStyles"
      },
      "metas": [
        {
          "extends": "textBlockStyles"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "id": "textBlockStyles"
      },
      "keys": {
        "background": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "typography": {
          "type": "link",
          "link": {
            "ref": {
              "path": [
                "_typography"
              ],
              "ancestor": "root"
            }
          }
        },
        "margin": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "margins in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "padding": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "padding in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "border": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssBorder"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                      "options": {
                        "name": "css border"
                      }
                    }
                  }
                ],
                "examples": [
                  "1px dashed #cc3399"
                ]
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder",
                        "description": "css border for each side"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        "borderRadius": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number"
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "corner"
                      },
                      "allow": [
                        "topLeft",
                        "topRight",
                        "bottomLeft",
                        "bottomRight"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "css border radius for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "width": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a fixed width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "maxWidth": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a max-width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "minWidth": {
          "type": "string",
          "flags": {
            "unit": "cssValue",
            "description": "set a min-width for the container or block, useful for constructing table-like flex layouts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                "options": {
                  "name": "css value"
                }
              }
            }
          ],
          "examples": [
            "10px",
            "inherit"
          ]
        },
        "flexGrow": {
          "type": "number",
          "flags": {
            "description": "for blocks or containers inside flex containers"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            }
          ]
        },
        "alignSelf": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "center",
            "end",
            "stretch",
            "flex-end",
            "flex-start",
            "inherit",
            "initial",
            "normal",
            "baseline",
            "first baseline",
            "last baseline"
          ]
        },
        "whiteSpace": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "normal",
            "nowrap",
            "pre",
            "pre-wrap",
            "pre-line"
          ]
        },
        "textAlign": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "left",
            "right",
            "center",
            "justify",
            "start",
            "end"
          ]
        },
        "caption": {
          "type": "object",
          "keys": {
            "typography": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "_typography"
                  ],
                  "ancestor": "root"
                }
              }
            }
          }
        },
        "prepend": {
          "type": "object",
          "keys": {
            "typography": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "_typography"
                  ],
                  "ancestor": "root"
                }
              }
            }
          }
        },
        "append": {
          "type": "object",
          "keys": {
            "typography": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "_typography"
                  ],
                  "ancestor": "root"
                }
              }
            }
          }
        },
        "links": {
          "type": "link",
          "link": {
            "ref": {
              "path": [
                "_links"
              ],
              "ancestor": "root"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "watermarkStyles"
      },
      "keys": {
        "opacity": {
          "type": "number",
          "flags": {
            "unit": "0..1"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 0
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 1
              }
            }
          ]
        },
        "typography": {
          "type": "link",
          "link": {
            "ref": {
              "path": [
                "_typography"
              ],
              "ancestor": "root"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "description": "general font used in the chart",
        "id": "_typography"
      },
      "keys": {
        "color": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "allow": [
            "currentColor"
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "cursive": {
          "type": "boolean",
          "flags": {
            "default": false
          },
          "preferences": {
            "convert": false
          }
        },
        "fontSize": {
          "type": "number",
          "flags": {
            "unit": "px",
            "description": "font size in pixel"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 1
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 99
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "fontStretch": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "ultra-condensed",
            "extra-condensed",
            "condensed",
            "semi-condensed",
            "normal",
            "semi-expanded",
            "expanded",
            "extra-expanded",
            "ultra-expanded",
            "50%",
            "62.5%",
            "75%",
            "87.5%",
            "100%",
            "112.5%",
            "125%",
            "150%",
            "200%"
          ]
        },
        "fontWeight": {
          "type": "any",
          "flags": {
            "only": true
          },
          "allow": [
            "bold",
            "bolder",
            "light",
            "lighter",
            "normal",
            "initial",
            100,
            200,
            300,
            400,
            500,
            600,
            700,
            800,
            900
          ]
        },
        "letterSpacing": {
          "type": "number",
          "flags": {
            "unit": "px"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": -99
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 99
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "lineHeight": {
          "type": "number",
          "flags": {
            "unit": "px"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 1
              }
            },
            {
              "name": "max",
              "args": {
                "limit": 99
              }
            }
          ],
          "preferences": {
            "convert": false
          }
        },
        "textTransform": {
          "type": "string",
          "flags": {
            "only": true
          },
          "allow": [
            "uppercase",
            "capitalize",
            "lowercase",
            "full-width",
            "none"
          ]
        },
        "typeface": {
          "type": "string",
          "flags": {
            "description": "font family"
          }
        },
        "underlined": {
          "type": "boolean",
          "flags": {
            "default": false
          },
          "preferences": {
            "convert": false
          }
        },
        "tabularNums": {
          "type": "boolean",
          "preferences": {
            "convert": false
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "_links"
      },
      "keys": {
        "typography": {
          "type": "link",
          "link": {
            "ref": {
              "path": [
                "_typography"
              ],
              "ancestor": "root"
            }
          }
        },
        "background": {
          "type": "string",
          "flags": {
            "unit": "cssColor"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                "options": {
                  "name": "css color"
                }
              }
            }
          ],
          "examples": [
            "#cc0044",
            "rgba(200,10,45,0.6)"
          ]
        },
        "padding": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number",
                "flags": {
                  "unit": "px"
                },
                "rules": [
                  {
                    "name": "min",
                    "args": {
                      "limit": 0
                    }
                  },
                  {
                    "name": "max",
                    "args": {
                      "limit": 100
                    }
                  }
                ],
                "preferences": {
                  "convert": false
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "padding in pixels for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "border": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { top, left, right, bottom }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssBorder"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                      "options": {
                        "name": "css border"
                      }
                    }
                  }
                ],
                "examples": [
                  "1px dashed #cc3399"
                ]
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "side"
                      },
                      "allow": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "rule": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder",
                        "description": "css border for each side"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        "borderRadius": {
          "type": "alternatives",
          "flags": {
            "description": "either a css string or an object with { topLeft, topRight, bottomLeft, bottomRight }"
          },
          "matches": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "unit": "cssMargin"
                },
                "rules": [
                  {
                    "name": "pattern",
                    "args": {
                      "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                      "options": {
                        "name": "css margin"
                      }
                    }
                  }
                ],
                "examples": [
                  "5px 10px",
                  "10px auto 5px"
                ]
              }
            },
            {
              "schema": {
                "type": "number"
              }
            },
            {
              "schema": {
                "type": "object",
                "patterns": [
                  {
                    "schema": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "unit": "corner"
                      },
                      "allow": [
                        "topLeft",
                        "topRight",
                        "bottomLeft",
                        "bottomRight"
                      ]
                    },
                    "rule": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "css border radius for each side"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "hover": {
          "type": "object",
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "borderColor": {
              "type": "alternatives",
              "flags": {
                "description": "either a css string or an object with { top, left, right, bottom }"
              },
              "matches": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "unit": "cssColor"
                    },
                    "rules": [
                      {
                        "name": "pattern",
                        "args": {
                          "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                          "options": {
                            "name": "css color"
                          }
                        }
                      }
                    ],
                    "examples": [
                      "#cc0044",
                      "rgba(200,10,45,0.6)"
                    ]
                  }
                },
                {
                  "schema": {
                    "type": "object",
                    "patterns": [
                      {
                        "schema": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "unit": "side"
                          },
                          "allow": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "rule": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "hover border color for each side"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "blockOptions"
      },
      "keys": {
        "order": {
          "type": "number",
          "flags": {
            "description": "for resorting blocks within their container"
          }
        },
        "forceInPlain": {
          "type": "boolean",
          "flags": {
            "description": "Set to true if this block should be shown in plain mode"
          },
          "preferences": {
            "convert": false
          }
        },
        "condition": {
          "type": "link",
          "flags": {
            "presence": "optional",
            "description": "logical condition for this block to be displayed"
          },
          "link": {
            "ref": {
              "path": [
                "condition"
              ],
              "ancestor": "root"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "bylineOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "byline"
        }
      ],
      "keys": {
        "caption": {
          "type": "object",
          "keys": {
            "chart": {
              "type": "string",
              "flags": {
                "description": "Custom byline caption for charts, e.g. \"Chart: \""
              },
              "allow": [
                ""
              ]
            },
            "map": {
              "type": "string",
              "flags": {
                "description": "Custom byline caption for maps, e.g. \"Map: \""
              },
              "allow": [
                ""
              ]
            },
            "table": {
              "type": "string",
              "flags": {
                "description": "Custom byline caption for tables, e.g. \"Table: \""
              },
              "allow": [
                ""
              ]
            },
            "fork": {
              "type": "string",
              "flags": {
                "description": "Custom byline caption for forks, e.g. \"Based on \""
              },
              "allow": [
                ""
              ]
            }
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "presence": "required",
        "id": "textOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "text"
        }
      ],
      "dependencies": [
        {
          "rel": "or",
          "peers": [
            "customField",
            "text"
          ]
        }
      ],
      "keys": {
        "customField": {
          "type": "string"
        },
        "text": {
          "type": "string",
          "flags": {
            "description": "static text to show when this field is true"
          }
        },
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom text caption"
          },
          "allow": [
            ""
          ],
          "examples": [
            "\"Figure\""
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "downloadImageOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "downloadImage"
        }
      ],
      "keys": {
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom caption, e.g. \"Download image\""
          }
        },
        "captionKey": {
          "type": "string",
          "flags": {
            "description": "Custom field id to use as caption"
          }
        },
        "tag": {
          "type": "any",
          "flags": {
            "presence": "forbidden"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "downloadPDFOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "downloadPDF"
        }
      ],
      "keys": {
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom caption, e.g. \"Download PDF\""
          }
        },
        "captionKey": {
          "type": "string",
          "flags": {
            "description": "Custom field id to use as caption"
          }
        },
        "tag": {
          "type": "any",
          "flags": {
            "presence": "forbidden"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "downloadSVGOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "downloadSVG"
        }
      ],
      "keys": {
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom caption, e.g. \"Download SVG\""
          }
        },
        "captionKey": {
          "type": "string",
          "flags": {
            "description": "Custom field id to use as caption"
          }
        },
        "tag": {
          "type": "any",
          "flags": {
            "presence": "forbidden"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "embedOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "embed"
        }
      ],
      "keys": {
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom embed caption, e.g. \"Copy embed code\""
          },
          "allow": [
            ""
          ]
        },
        "captionKey": {
          "type": "string",
          "flags": {
            "description": "Custom field id to use as caption"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "getTheDataOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "getTheData"
        }
      ],
      "keys": {
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom data download caption"
          },
          "allow": [
            ""
          ],
          "examples": [
            "\"Get the data\""
          ]
        },
        "captionKey": {
          "type": "string",
          "flags": {
            "description": "Custom field id to use as caption"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "headlineOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "headline"
        }
      ],
      "keys": {}
    },
    {
      "type": "object",
      "flags": {
        "presence": "required",
        "id": "logoOptions"
      },
      "metas": [
        {
          "extends": "blockOptions",
          "requireType": "logo"
        }
      ],
      "keys": {
        "variants": {
          "type": "array",
          "flags": {
            "presence": "required"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 1
              }
            }
          ],
          "items": [
            {
              "type": "object",
              "dependencies": [
                {
                  "rel": "xor",
                  "peers": [
                    "text",
                    "image"
                  ]
                }
              ],
              "keys": {
                "id": {
                  "type": "string",
                  "flags": {
                    "description": "used to identify the logo in chart metadata, required if more than one variant is defined"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^[a-zA-Z0-9-]+$/"
                      }
                    }
                  ],
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "blocks/%KEY%/options/variants"
                        ],
                        "ancestor": "root"
                      },
                      "is": {
                        "type": "array",
                        "rules": [
                          {
                            "name": "min",
                            "args": {
                              "limit": 2
                            }
                          }
                        ]
                      },
                      "then": {
                        "type": "any",
                        "flags": {
                          "presence": "required"
                        }
                      }
                    }
                  ]
                },
                "title": {
                  "type": "string",
                  "flags": {
                    "description": "name of logo as it will appear in the UI, required if more than one variant is defined"
                  },
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "blocks/%KEY%/options/variants"
                        ],
                        "ancestor": "root"
                      },
                      "is": {
                        "type": "array",
                        "rules": [
                          {
                            "name": "min",
                            "args": {
                              "limit": 2
                            }
                          }
                        ]
                      },
                      "then": {
                        "type": "any",
                        "flags": {
                          "presence": "required"
                        }
                      }
                    }
                  ]
                },
                "text": {
                  "type": "string",
                  "flags": {
                    "description": "for a text only logo"
                  }
                },
                "url": {
                  "type": "string",
                  "flags": {
                    "description": "if configured, logo will link to this url"
                  },
                  "rules": [
                    {
                      "name": "uri"
                    }
                  ]
                },
                "linkTitle": {
                  "type": "string",
                  "flags": {
                    "description": "title attribute for <a> tag, if data.url is configured"
                  },
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "url"
                        ]
                      },
                      "is": {
                        "type": "any",
                        "flags": {
                          "presence": "required"
                        }
                      },
                      "otherwise": {
                        "type": "any",
                        "flags": {
                          "presence": "forbidden"
                        }
                      }
                    }
                  ]
                },
                "image": {
                  "type": "object",
                  "keys": {
                    "src": {
                      "type": "string",
                      "flags": {
                        "presence": "required"
                      },
                      "rules": [
                        {
                          "name": "uri"
                        }
                      ],
                      "metas": [
                        {
                          "overrideSupport": [
                            "darkMode"
                          ]
                        }
                      ]
                    },
                    "height": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "height of logo"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      },
                      "whens": [
                        {
                          "ref": {
                            "path": [
                              "src"
                            ]
                          },
                          "is": {
                            "type": "any",
                            "flags": {
                              "presence": "required"
                            }
                          },
                          "then": {
                            "type": "any",
                            "flags": {
                              "presence": "required"
                            }
                          }
                        }
                      ]
                    },
                    "altText": {
                      "type": "string",
                      "allow": [
                        ""
                      ],
                      "whens": [
                        {
                          "ref": {
                            "path": [
                              "src"
                            ]
                          },
                          "is": {
                            "type": "any",
                            "flags": {
                              "presence": "required"
                            }
                          },
                          "otherwise": {
                            "type": "any",
                            "flags": {
                              "presence": "forbidden"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "presence": "required",
        "id": "imageOptions"
      },
      "metas": [
        {
          "extends": "blockOptions",
          "requireType": "image"
        }
      ],
      "keys": {
        "url": {
          "type": "string",
          "flags": {
            "description": "if configured, image will link to this url"
          },
          "rules": [
            {
              "name": "uri"
            }
          ]
        },
        "linkTitle": {
          "type": "string",
          "flags": {
            "description": "title attribute for <a> tag, if data.url is configured"
          },
          "whens": [
            {
              "ref": {
                "path": [
                  "url"
                ]
              },
              "is": {
                "type": "any",
                "flags": {
                  "presence": "required"
                }
              },
              "otherwise": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ]
        },
        "src": {
          "type": "string",
          "flags": {
            "description": "image source",
            "presence": "required"
          },
          "rules": [
            {
              "name": "uri"
            }
          ],
          "metas": [
            {
              "overrideSupport": [
                "darkMode"
              ]
            }
          ]
        },
        "altText": {
          "type": "string",
          "flags": {
            "presence": "required"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "mapAttributionOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "mapAttribution"
        }
      ],
      "keys": {
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom map attribution caption"
          },
          "allow": [
            ""
          ],
          "examples": [
            "\"Map data\""
          ]
        },
        "captionKey": {
          "type": "string",
          "flags": {
            "description": "Custom field id to use as caption"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "menuOptions"
      },
      "metas": [
        {
          "extends": "blockOptions",
          "requireType": "menu"
        }
      ],
      "keys": {
        "svgIcon": {
          "type": "string"
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "notesOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "notes"
        }
      ],
      "keys": {
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom notes caption, e.g. \"Notes: \""
          },
          "allow": [
            ""
          ]
        },
        "captionKey": {
          "type": "string",
          "flags": {
            "description": "Custom field id to use as notes caption"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "shareToolsOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "shareTools"
        }
      ],
      "keys": {
        "tools": {
          "type": "array",
          "rules": [
            {
              "name": "unique"
            },
            {
              "name": "min",
              "args": {
                "limit": 1
              }
            }
          ],
          "items": [
            {
              "type": "string",
              "flags": {
                "only": true,
                "unit": "tool"
              },
              "allow": [
                "twitter",
                "facebook",
                "linkedin",
                "downloadCSV",
                "email",
                "print"
              ]
            }
          ]
        },
        "icons": {
          "type": "object",
          "patterns": [
            {
              "schema": {
                "type": "string",
                "flags": {
                  "only": true,
                  "unit": "tool"
                },
                "allow": [
                  "twitter",
                  "facebook",
                  "linkedin",
                  "downloadCSV",
                  "email",
                  "print"
                ]
              },
              "rule": {
                "type": "object",
                "keys": {
                  "path": {
                    "type": "string",
                    "flags": {
                      "description": "SVG icon path",
                      "presence": "required"
                    }
                  },
                  "viewBox": {
                    "type": "string",
                    "flags": {
                      "description": "SVG icon viewBox",
                      "presence": "required"
                    },
                    "examples": [
                      "0 0 50 50"
                    ]
                  }
                }
              }
            }
          ]
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "sourceOptions"
      },
      "metas": [
        {
          "extends": "textBlockOptions",
          "requireType": "source"
        }
      ],
      "keys": {
        "caption": {
          "type": "string",
          "flags": {
            "description": "Custom source caption, e.g. \"Source: \""
          },
          "allow": [
            ""
          ]
        },
        "captionKey": {
          "type": "string",
          "flags": {
            "description": "Custom field id to use as source caption"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "id": "textBlockOptions"
      },
      "metas": [
        {
          "extends": "blockOptions"
        }
      ],
      "keys": {
        "tag": {
          "type": "string",
          "allow": [
            "div",
            "span",
            "p",
            "h1",
            "h2",
            "h3",
            "h4",
            "h5",
            "h6"
          ]
        },
        "prepend": {
          "type": "string",
          "flags": {
            "description": "Custom HTML to be inserted at the beginning of the text block"
          }
        },
        "append": {
          "type": "string",
          "flags": {
            "description": "Custom HTML to be inserted at the end of the text block"
          }
        }
      }
    },
    {
      "type": "object",
      "flags": {
        "presence": "required",
        "id": "watermarkOptions"
      },
      "metas": [
        {
          "extends": "blockOptions"
        }
      ],
      "dependencies": [
        {
          "rel": "xor",
          "peers": [
            "customField",
            "text"
          ]
        }
      ],
      "keys": {
        "customField": {
          "type": "string"
        },
        "text": {
          "type": "string",
          "flags": {
            "description": "static text to show when this field is true"
          }
        },
        "rotate": {
          "type": "boolean",
          "flags": {
            "description": "set to false to disable watermark rotation"
          },
          "preferences": {
            "convert": false
          }
        }
      }
    }
  ],
  "keys": {
    "version": {
      "type": "number",
      "flags": {
        "only": true,
        "default": 1,
        "description": "themeData schema version, to simplify larger migrations. To check out which theme options are availble for specific version, search for \"version:2\" etc."
      },
      "allow": [
        1,
        2
      ]
    },
    "colors": {
      "type": "object",
      "flags": {
        "description": "All the colors used in a theme"
      },
      "keys": {
        "background": {
          "type": "string",
          "flags": {
            "unit": "hexColor",
            "description": "Assumed background color of the charts, used for calculation of label colors. Use style.body.background to set the actual, rendered background color."
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                "options": {
                  "name": "hex color"
                }
              }
            }
          ],
          "examples": [
            "#ff99bb"
          ]
        },
        "chartContentBaseColor": {
          "type": "string",
          "flags": {
            "unit": "hexColor",
            "description": "base color used for chart labels, gridlines etc. will automatically be interpolated with background color"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                "options": {
                  "name": "hex color"
                }
              }
            }
          ],
          "examples": [
            "#ff99bb"
          ],
          "metas": [
            {
              "used": [
                "shared/defaultColors.js"
              ]
            }
          ]
        },
        "bgBlendRatios": {
          "type": "object",
          "flags": {
            "description": "used for computing colors based on chart background and base color"
          },
          "metas": [
            {
              "used": [
                "shared/defaultColors.js"
              ]
            }
          ],
          "keys": {
            "axis": {
              "type": "number",
              "flags": {
                "unit": "0..1"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 1
                  }
                }
              ],
              "metas": [
                {
                  "overrideSupport": [
                    "darkMode"
                  ]
                }
              ]
            },
            "gridline": {
              "type": "number",
              "flags": {
                "unit": "0..1"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 1
                  }
                }
              ],
              "metas": [
                {
                  "overrideSupport": [
                    "darkMode"
                  ]
                }
              ]
            },
            "series": {
              "type": "number",
              "flags": {
                "unit": "0..1"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 1
                  }
                }
              ],
              "metas": [
                {
                  "overrideSupport": [
                    "darkMode"
                  ]
                }
              ]
            },
            "tickText": {
              "type": "object",
              "keys": {
                "primary": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ],
                  "metas": [
                    {
                      "overrideSupport": [
                        "darkMode"
                      ]
                    }
                  ]
                },
                "secondary": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ],
                  "metas": [
                    {
                      "overrideSupport": [
                        "darkMode"
                      ]
                    }
                  ]
                }
              }
            },
            "value": {
              "type": "number",
              "flags": {
                "unit": "0..1"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 1
                  }
                }
              ],
              "metas": [
                {
                  "overrideSupport": [
                    "darkMode"
                  ]
                }
              ]
            }
          }
        },
        "categories": {
          "type": "array",
          "flags": {
            "description": "category color presets, not sure where we still use them"
          },
          "items": [
            {
              "type": "array",
              "flags": {
                "unit": "colorArray"
              },
              "items": [
                {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                }
              ]
            }
          ]
        },
        "gradients": {
          "type": "array",
          "flags": {
            "description": "gradients presets used in the scatterplot and map gradient editor"
          },
          "items": [
            {
              "type": "array",
              "flags": {
                "unit": "colorArray"
              },
              "items": [
                {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                }
              ]
            }
          ]
        },
        "groups": {
          "type": "array",
          "flags": {
            "description": "Groups of colors can be defined to control how swatches in the palette are displayed"
          },
          "items": [
            {
              "type": "object",
              "keys": {
                "name": {
                  "type": "string",
                  "flags": {
                    "description": "Optional name of color group, will be displayed in palette if present"
                  }
                },
                "colors": {
                  "type": "array",
                  "flags": {
                    "description": "List of color subgroups within group",
                    "presence": "required"
                  },
                  "metas": [
                    {
                      "overrideExclude": [
                        "darkMode"
                      ]
                    }
                  ],
                  "items": [
                    {
                      "type": "array",
                      "flags": {
                        "unit": "colorArray"
                      },
                      "items": [
                        {
                          "type": "string",
                          "flags": {
                            "unit": "hexColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                "options": {
                                  "name": "hex color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#ff99bb"
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            }
          ]
        },
        "mode": {
          "type": "object",
          "flags": {
            "description": "Custom coloring logic"
          },
          "keys": {
            "rotateLimit": {
              "type": "number",
              "flags": {
                "description": "Optional rotation through color palette instead of automatic shades, max number of elements for which this gets applied"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                }
              ],
              "metas": [
                {
                  "used": [
                    "d3-pies"
                  ]
                }
              ]
            },
            "shades": {
              "type": "object",
              "metas": [
                {
                  "used": [
                    "d3-pies"
                  ]
                }
              ],
              "patterns": [
                {
                  "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                  "rule": {
                    "type": "alternatives",
                    "matches": [
                      {
                        "schema": {
                          "type": "array",
                          "items": [
                            {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        },
        "palette": {
          "type": "array",
          "flags": {
            "unit": "colorArray",
            "description": "the colors that are shown in the color selector"
          },
          "rules": [
            {
              "name": "min",
              "args": {
                "limit": 2
              }
            }
          ],
          "items": [
            {
              "type": "string",
              "flags": {
                "unit": "hexColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                    "options": {
                      "name": "hex color"
                    }
                  }
                }
              ],
              "examples": [
                "#ff99bb"
              ]
            }
          ]
        },
        "picker": {
          "type": "object",
          "flags": {
            "description": "settings for the display of the color selector"
          },
          "keys": {
            "controls": {
              "type": "object",
              "keys": {
                "hue": {
                  "type": "boolean",
                  "flags": {
                    "description": "show/hide hue ramp"
                  },
                  "preferences": {
                    "convert": false
                  }
                },
                "lightness": {
                  "type": "boolean",
                  "flags": {
                    "description": "show/hide lightness ramp"
                  },
                  "preferences": {
                    "convert": false
                  }
                },
                "saturation": {
                  "type": "boolean",
                  "flags": {
                    "description": "show/hide saturation ramp"
                  },
                  "preferences": {
                    "convert": false
                  }
                },
                "hexEditable": {
                  "type": "boolean",
                  "flags": {
                    "description": "disable manual hex input"
                  },
                  "preferences": {
                    "convert": false
                  }
                }
              }
            },
            "showDuplicates": {
              "type": "boolean",
              "flags": {
                "default": false,
                "description": "determines if duplicate colors are shown in the color selector"
              },
              "preferences": {
                "convert": false
              }
            },
            "rowCount": {
              "type": "number",
              "flags": {
                "description": "determines how many colors to show per row of colors in the color selctor"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 30
                  }
                }
              ]
            }
          }
        },
        "positive": {
          "type": "string",
          "flags": {
            "unit": "hexColor",
            "description": "color used for positive values in column charts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                "options": {
                  "name": "hex color"
                }
              }
            }
          ],
          "examples": [
            "#ff99bb"
          ]
        },
        "neutral": {
          "type": "string",
          "flags": {
            "unit": "hexColor",
            "description": "color to use for neutral values"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                "options": {
                  "name": "hex color"
                }
              }
            }
          ],
          "examples": [
            "#ff99bb"
          ]
        },
        "negative": {
          "type": "string",
          "flags": {
            "unit": "hexColor",
            "description": "color used for negative values in column charts"
          },
          "rules": [
            {
              "name": "pattern",
              "args": {
                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                "options": {
                  "name": "hex color"
                }
              }
            }
          ],
          "examples": [
            "#ff99bb"
          ]
        }
      }
    },
    "export": {
      "type": "object",
      "flags": {
        "description": "Settings for export"
      },
      "keys": {
        "pdf": {
          "type": "object",
          "flags": {
            "description": "Settings for the PDF export"
          },
          "keys": {
            "scale": {
              "type": "number",
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0.1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 5
                  }
                }
              ]
            },
            "fonts": {
              "type": "object"
            },
            "fontStack": {
              "type": "boolean",
              "preferences": {
                "convert": false
              }
            },
            "defaultFont": {
              "type": "string"
            },
            "cmykColors": {
              "type": "any"
            },
            "presets": {
              "type": "array",
              "items": [
                {
                  "type": "object",
                  "keys": {
                    "title": {
                      "type": "string",
                      "flags": {
                        "description": "Name of preset as it appears in the publish step",
                        "presence": "required"
                      }
                    },
                    "width": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10000
                          }
                        }
                      ]
                    },
                    "height": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10000
                          }
                        }
                      ]
                    },
                    "default": {
                      "type": "boolean",
                      "flags": {
                        "description": "Preset that gets automatically applied, may only be true for one preset"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "scale": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.5
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 2
                          }
                        }
                      ]
                    },
                    "unit": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "presence": "required"
                      },
                      "allow": [
                        "mm",
                        "in",
                        "px"
                      ]
                    },
                    "include": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "full",
                        "plain"
                      ]
                    },
                    "colorMode": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "rgb",
                        "cmyk"
                      ]
                    },
                    "fullVectorMode": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    },
                    "ligatures": {
                      "type": "boolean",
                      "flags": {
                        "default": true
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "transparent": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              ]
            }
          }
        },
        "svg": {
          "type": "object",
          "keys": {
            "presets": {
              "type": "array",
              "items": [
                {
                  "type": "object",
                  "keys": {
                    "title": {
                      "type": "string",
                      "flags": {
                        "description": "Name of preset as it appears in the publish step",
                        "presence": "required"
                      }
                    },
                    "width": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10000
                          }
                        }
                      ]
                    },
                    "height": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10000
                          }
                        }
                      ]
                    },
                    "default": {
                      "type": "boolean",
                      "flags": {
                        "description": "Preset that gets automatically applied, may only be true for one preset"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "transparent": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              ]
            }
          }
        },
        "png": {
          "type": "object",
          "keys": {
            "presets": {
              "type": "array",
              "items": [
                {
                  "type": "object",
                  "keys": {
                    "title": {
                      "type": "string",
                      "flags": {
                        "description": "Name of preset as it appears in the publish step",
                        "presence": "required"
                      }
                    },
                    "default": {
                      "type": "boolean",
                      "flags": {
                        "description": "Preset that gets automatically applied, may only be true for one preset"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "width": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10000
                          }
                        }
                      ]
                    },
                    "height": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10000
                          }
                        }
                      ]
                    },
                    "border": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 80
                          }
                        }
                      ]
                    },
                    "zoom": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ]
                    },
                    "include": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "full",
                        "plain"
                      ]
                    },
                    "logo": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "on",
                        "off",
                        "auto"
                      ]
                    },
                    "transparent": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "metadata": {
      "type": "object",
      "flags": {
        "description": "Predefined default chart settings, will be applied whenever a chart is created with the theme"
      },
      "keys": {
        "describe": {
          "type": "object",
          "keys": {
            "intro": {
              "type": "string",
              "flags": {
                "description": "chart description"
              }
            },
            "byline": {
              "type": "string"
            },
            "hide-title": {
              "type": "boolean",
              "preferences": {
                "convert": false
              }
            },
            "aria-description": {
              "type": "string"
            },
            "number-append": {
              "type": "string"
            },
            "number-prepend": {
              "type": "string"
            },
            "number-format": {
              "type": "string"
            },
            "number-divisor": {
              "type": "number"
            },
            "source-name": {
              "type": "string"
            },
            "source-url": {
              "type": "string",
              "rules": [
                {
                  "name": "uri"
                }
              ]
            }
          }
        },
        "visualize": {
          "type": "object",
          "flags": {
            "unknown": true
          },
          "keys": {
            "dark-mode-invert": {
              "type": "boolean",
              "flags": {
                "description": "set to false to disable the automatic color conversion for dark mode"
              },
              "preferences": {
                "convert": false
              }
            },
            "sharing": {
              "type": "object",
              "keys": {
                "auto": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "enabled": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "url": {
                  "type": "string",
                  "rules": [
                    {
                      "name": "uri"
                    }
                  ]
                }
              }
            }
          }
        },
        "annotate": {
          "type": "object",
          "keys": {
            "notes": {
              "type": "string"
            }
          }
        },
        "publish": {
          "type": "object",
          "keys": {
            "autoDarkMode": {
              "type": "boolean",
              "flags": {
                "description": "enable/disable the automatic dark mode switching based on browser preferences"
              },
              "preferences": {
                "convert": false
              }
            },
            "blocks": {
              "type": "object",
              "keys": {
                "download-image": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "download-pdf": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "download-svg": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "embed": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "logo": {
                  "type": "object",
                  "keys": {
                    "enabled": {
                      "type": "boolean",
                      "flags": {
                        "description": "show the logo in footer (if available)"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "id": {
                      "type": "string",
                      "flags": {
                        "description": "id of logo to show, if multiple logos are available"
                      }
                    }
                  }
                },
                "get-the-data": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                }
              }
            },
            "embed-width": {
              "type": "number",
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                }
              ]
            },
            "embed-height": {
              "type": "number",
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                }
              ]
            },
            "export-pdf": {
              "type": "object",
              "keys": {
                "width": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    }
                  ]
                },
                "height": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    }
                  ]
                },
                "colorMode": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "cmyk",
                    "rgb"
                  ]
                },
                "unit": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "px",
                    "mm",
                    "in"
                  ]
                },
                "fullVectorMode": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "scale": {
                  "type": "number"
                },
                "ligatures": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "include": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "id": "export-include",
                    "description": "full = include header and footer in export, plain = just the chart body"
                  },
                  "allow": [
                    "full",
                    "plain"
                  ]
                },
                "border": {
                  "type": "object",
                  "keys": {
                    "width": {
                      "type": "number",
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        }
                      ]
                    }
                  }
                }
              }
            },
            "export-svg": {
              "type": "object",
              "keys": {
                "width": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    }
                  ]
                },
                "height": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    }
                  ]
                },
                "fullVectorMode": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "transparent": {
                  "type": "boolean",
                  "preferences": {
                    "convert": false
                  }
                },
                "include": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "id": "export-include",
                    "description": "full = include header and footer in export, plain = just the chart body"
                  },
                  "allow": [
                    "full",
                    "plain"
                  ]
                }
              }
            },
            "force-attribution": {
              "type": "boolean",
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "custom": {
          "type": "object"
        }
      }
    },
    "overrides": {
      "type": "array",
      "flags": {
        "description": "array of override objects"
      },
      "items": [
        {
          "type": "alternatives",
          "matches": [
            {
              "schema": {
                "type": "object",
                "flags": {
                  "description": "theme overrides for dark mode"
                },
                "keys": {
                  "type": {
                    "type": "string",
                    "flags": {
                      "only": true,
                      "presence": "required"
                    },
                    "allow": [
                      "darkMode"
                    ]
                  },
                  "condition": {
                    "type": "link",
                    "flags": {
                      "presence": "optional",
                      "description": "logical condition for this override to be applied"
                    },
                    "link": {
                      "ref": {
                        "path": [
                          "condition"
                        ],
                        "ancestor": "root"
                      }
                    }
                  },
                  "settings": {
                    "type": "object",
                    "flags": {
                      "presence": "required"
                    },
                    "rules": [
                      {
                        "name": "min",
                        "args": {
                          "limit": 1
                        }
                      }
                    ]
                  }
                }
              }
            },
            {
              "schema": {
                "type": "object",
                "flags": {
                  "description": "general overrides"
                },
                "keys": {
                  "type": {
                    "type": "any",
                    "flags": {
                      "presence": "forbidden"
                    }
                  },
                  "condition": {
                    "type": "link",
                    "flags": {
                      "presence": "required",
                      "description": "logical condition for this override to be applied"
                    },
                    "link": {
                      "ref": {
                        "path": [
                          "condition"
                        ],
                        "ancestor": "root"
                      }
                    }
                  },
                  "settings": {
                    "type": "object",
                    "flags": {
                      "presence": "required"
                    },
                    "rules": [
                      {
                        "name": "min",
                        "args": {
                          "limit": 1
                        }
                      }
                    ]
                  }
                }
              }
            }
          ]
        }
      ]
    },
    "printTheme": {
      "type": "string",
      "flags": {
        "description": "ID of the print theme related to this theme",
        "presence": "optional"
      }
    },
    "rightToLeft": {
      "type": "boolean",
      "preferences": {
        "convert": false
      }
    },
    "template": {
      "type": "object",
      "flags": {
        "description": "for adding custom html and javascript to charts"
      },
      "keys": {
        "afterChart": {
          "type": "string",
          "flags": {
            "description": "custom HTML that is being added below the chart (iframe only). To embed external scripts use template.externalScripts."
          }
        },
        "externalScripts": {
          "type": "array",
          "flags": {
            "description": "External javascript to be loaded in published iframe embeds, e.g for custom resizing or tracking logic"
          },
          "items": [
            {
              "type": "string",
              "rules": [
                {
                  "name": "uri"
                }
              ]
            }
          ]
        }
      }
    },
    "type": {
      "type": "string",
      "flags": {
        "only": true,
        "presence": "optional",
        "description": "Defines if this theme is a web or print theme"
      },
      "allow": [
        "web",
        "print"
      ]
    },
    "vis": {
      "type": "object",
      "flags": {
        "description": "visualization-specific theme settings"
      },
      "examples": [
        {
          "tables": {},
          "d3-lines": {},
          "d3-bars": {}
        }
      ],
      "keys": {
        "base": {
          "type": "object",
          "keys": {
            "grid": {
              "type": "object",
              "flags": {
                "description": "Style variations for the xyGrid block"
              },
              "keys": {
                "general": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for the xyGrid block"
                  },
                  "keys": {
                    "baseLine": {
                      "type": "object",
                      "flags": {
                        "description": "styles for the zero baseline"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, the zero baseline will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "gridLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for grid lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the grid lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "major": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        },
                        "minor": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "tickLabels": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick labels will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick label for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick label and tick line (or plot area, if tick lines are disabled)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "extraSpace": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "extra space to be added to the outer margins to adjust spacing issues with weird fonts"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "letterSpacing": {
                          "type": "string",
                          "flags": {
                            "unit": "cssValue"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                "options": {
                                  "name": "css value"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "10px",
                            "inherit"
                          ]
                        },
                        "units": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "default": "all",
                            "description": "Defines if numeral units (prepend/append) for currency and % are applied to all ticks, or just first or last tick"
                          },
                          "allow": [
                            "all",
                            "first",
                            "last"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "buffer": {
                          "type": "number",
                          "flags": {
                            "description": "Minimum distance between two adjacent tick labels"
                          }
                        }
                      }
                    },
                    "tickLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "forceOn": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, tick lines will be rendered whenever gridlines are turned on"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick line and plot area"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "length": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lengthInside": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines combined with tickLabelsInside option (only supported in yGrid)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick line for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        }
                      }
                    }
                  }
                },
                "vertical": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for the xyGrid block"
                  },
                  "keys": {
                    "baseLine": {
                      "type": "object",
                      "flags": {
                        "description": "styles for the zero baseline"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, the zero baseline will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "gridLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for grid lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the grid lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "major": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        },
                        "minor": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "tickLabels": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick labels will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick label for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick label and tick line (or plot area, if tick lines are disabled)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "extraSpace": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "extra space to be added to the outer margins to adjust spacing issues with weird fonts"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "letterSpacing": {
                          "type": "string",
                          "flags": {
                            "unit": "cssValue"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                "options": {
                                  "name": "css value"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "10px",
                            "inherit"
                          ]
                        },
                        "units": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "default": "all",
                            "description": "Defines if numeral units (prepend/append) for currency and % are applied to all ticks, or just first or last tick"
                          },
                          "allow": [
                            "all",
                            "first",
                            "last"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "buffer": {
                          "type": "number",
                          "flags": {
                            "description": "Minimum distance between two adjacent tick labels"
                          }
                        }
                      }
                    },
                    "tickLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "forceOn": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, tick lines will be rendered whenever gridlines are turned on"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick line and plot area"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "length": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lengthInside": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines combined with tickLabelsInside option (only supported in yGrid)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick line for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        }
                      }
                    }
                  }
                },
                "horizontal": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for the xyGrid block"
                  },
                  "keys": {
                    "baseLine": {
                      "type": "object",
                      "flags": {
                        "description": "styles for the zero baseline"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, the zero baseline will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "gridLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for grid lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the grid lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "major": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        },
                        "minor": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "tickLabels": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick labels will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick label for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick label and tick line (or plot area, if tick lines are disabled)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "extraSpace": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "extra space to be added to the outer margins to adjust spacing issues with weird fonts"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "letterSpacing": {
                          "type": "string",
                          "flags": {
                            "unit": "cssValue"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                "options": {
                                  "name": "css value"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "10px",
                            "inherit"
                          ]
                        },
                        "units": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "default": "all",
                            "description": "Defines if numeral units (prepend/append) for currency and % are applied to all ticks, or just first or last tick"
                          },
                          "allow": [
                            "all",
                            "first",
                            "last"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "buffer": {
                          "type": "number",
                          "flags": {
                            "description": "Minimum distance between two adjacent tick labels"
                          }
                        }
                      }
                    },
                    "tickLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "forceOn": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, tick lines will be rendered whenever gridlines are turned on"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick line and plot area"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "length": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lengthInside": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines combined with tickLabelsInside option (only supported in yGrid)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick line for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        }
                      }
                    }
                  }
                },
                "primary": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for the xyGrid block"
                  },
                  "keys": {
                    "baseLine": {
                      "type": "object",
                      "flags": {
                        "description": "styles for the zero baseline"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, the zero baseline will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "gridLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for grid lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the grid lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "major": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        },
                        "minor": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "tickLabels": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick labels will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick label for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick label and tick line (or plot area, if tick lines are disabled)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "extraSpace": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "extra space to be added to the outer margins to adjust spacing issues with weird fonts"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "letterSpacing": {
                          "type": "string",
                          "flags": {
                            "unit": "cssValue"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                "options": {
                                  "name": "css value"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "10px",
                            "inherit"
                          ]
                        },
                        "units": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "default": "all",
                            "description": "Defines if numeral units (prepend/append) for currency and % are applied to all ticks, or just first or last tick"
                          },
                          "allow": [
                            "all",
                            "first",
                            "last"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "buffer": {
                          "type": "number",
                          "flags": {
                            "description": "Minimum distance between two adjacent tick labels"
                          }
                        }
                      }
                    },
                    "tickLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "forceOn": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, tick lines will be rendered whenever gridlines are turned on"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick line and plot area"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "length": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lengthInside": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines combined with tickLabelsInside option (only supported in yGrid)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick line for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        }
                      }
                    }
                  }
                },
                "secondary": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for the xyGrid block"
                  },
                  "keys": {
                    "baseLine": {
                      "type": "object",
                      "flags": {
                        "description": "styles for the zero baseline"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, the zero baseline will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "gridLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for grid lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the grid lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "major": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        },
                        "minor": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "crisp": {
                              "type": "boolean",
                              "flags": {
                                "default": true,
                                "description": "set to false to omit `shape-rendering: crispEdges`"
                              },
                              "preferences": {
                                "convert": false
                              }
                            },
                            "width": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "stroke width"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "strokeDasharray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "allow": [
                                "dotted",
                                "none"
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            },
                            "strokeLinecap": {
                              "type": "string",
                              "flags": {
                                "only": true,
                                "description": "line cap style for dashed lines"
                              },
                              "allow": [
                                "butt",
                                "round",
                                "square"
                              ]
                            },
                            "blendBaseColorWithBg": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1",
                                "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ],
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "tickLabels": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick labels will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick label for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick label and tick line (or plot area, if tick lines are disabled)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "extraSpace": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "extra space to be added to the outer margins to adjust spacing issues with weird fonts"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "letterSpacing": {
                          "type": "string",
                          "flags": {
                            "unit": "cssValue"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                "options": {
                                  "name": "css value"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "10px",
                            "inherit"
                          ]
                        },
                        "units": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "default": "all",
                            "description": "Defines if numeral units (prepend/append) for currency and % are applied to all ticks, or just first or last tick"
                          },
                          "allow": [
                            "all",
                            "first",
                            "last"
                          ]
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        },
                        "buffer": {
                          "type": "number",
                          "flags": {
                            "description": "Minimum distance between two adjacent tick labels"
                          }
                        }
                      }
                    },
                    "tickLines": {
                      "type": "object",
                      "flags": {
                        "description": "styles for tick lines"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "crisp": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "set to false to omit `shape-rendering: crispEdges`"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDasharray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "allow": [
                            "dotted",
                            "none"
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "strokeLinecap": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "description": "line cap style for dashed lines"
                          },
                          "allow": [
                            "butt",
                            "round",
                            "square"
                          ]
                        },
                        "aboveChart": {
                          "type": "boolean",
                          "flags": {
                            "default": true,
                            "description": "if true, the tick lines will be rendered above the chart"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "forceOn": {
                          "type": "boolean",
                          "flags": {
                            "description": "if true, tick lines will be rendered whenever gridlines are turned on"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "distance": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance between tick line and plot area"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "length": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lengthInside": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "length of tick lines combined with tickLabelsInside option (only supported in yGrid)"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "hideZero": {
                          "type": "boolean",
                          "flags": {
                            "default": false,
                            "description": "if true, the tick line for the zero tick will be omitted"
                          },
                          "preferences": {
                            "convert": false
                          }
                        },
                        "blendBaseColorWithBg": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "blend chartContentBaseColor with background by this ratio, if no specific color is set"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ],
                          "metas": [
                            {
                              "overrideSupport": [
                                "darkMode"
                              ],
                              "noDarkModeInvert": true
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            },
            "insetMap": {
              "type": "object",
              "flags": {
                "description": "general inset map settings for locator, choropleth and symbol maps"
              },
              "keys": {
                "view": {
                  "type": "object",
                  "flags": {
                    "description": "Style of minimap view box that contextualises which part of a region / the world is being shown by the main map"
                  },
                  "keys": {
                    "strokeWidth": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "strokeDashArray": {
                      "type": "string",
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                            "options": {
                              "name": "stroke-dasharray"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "5 10",
                        "3%,2%,1%"
                      ]
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of view box/dot that contextualises main map in minimap (both types)"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "label": {
                  "type": "object",
                  "flags": {
                    "description": "typography settings for minimap label"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "globe": {
                  "type": "object",
                  "flags": {
                    "description": "Style properties for the globe style mini-map"
                  },
                  "keys": {
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, globe map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "landOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the outline of land in the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of land outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "globeOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the circular outline around the globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of globe outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "graticule": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the graticule (latitude & longitude lines) on the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of graticule (latitude/longitutde lines) in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "water": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of water in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of land in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of circle behind globe used to provide contrast from backdrop"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "region": {
                  "type": "object",
                  "keys": {
                    "inBox": {
                      "type": "boolean",
                      "flags": {
                        "description": "if set to true, region is positioned centrally within its container"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, region map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outline": {
                      "type": "object",
                      "flags": {
                        "description": "Style of region minimap outline"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        }
                      }
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "landOutline": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region outline in region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            },
            "labels": {
              "type": "object",
              "keys": {
                "axes": {
                  "type": "object",
                  "flags": {
                    "description": "styles for axis labels, currently only relevant for scatterplot"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    }
                  }
                },
                "inside": {
                  "type": "object",
                  "flags": {
                    "description": "special settings for inside labels"
                  },
                  "keys": {
                    "inverted": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "color of 'inverted' text"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ],
                      "metas": [
                        {
                          "noDarkModeInvert": true
                        }
                      ]
                    },
                    "normal": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "color of non-inverted text"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ],
                      "metas": [
                        {
                          "noDarkModeInvert": true
                        }
                      ]
                    }
                  }
                },
                "legend": {
                  "type": "object",
                  "flags": {
                    "description": "styles for legend text"
                  },
                  "metas": [
                    {
                      "todo": "why isn't this in typography.legend?"
                    }
                  ],
                  "keys": {
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    }
                  }
                },
                "values": {
                  "type": "object",
                  "flags": {
                    "description": "styles for value labels"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    }
                  }
                },
                "series": {
                  "type": "object",
                  "flags": {
                    "description": "styles for series labels, currently only relevant for column charts"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "letterSpacing": {
                      "type": "string",
                      "flags": {
                        "unit": "cssValue"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                            "options": {
                              "name": "css value"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "10px",
                        "inherit"
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    }
                  }
                },
                "invertLuminance": {
                  "type": "number",
                  "flags": {
                    "description": "For when text is on a solid background (e.g in labels on bars), specifies the luminance level of the background color at which the color of the text gets inverted"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ]
                }
              }
            },
            "legend": {
              "type": "object",
              "flags": {
                "description": "Styles for the legend (spacing, swatches etc.)"
              },
              "keys": {
                "ruler": {
                  "type": "object",
                  "flags": {
                    "description": "options for the ruler legend"
                  },
                  "keys": {
                    "thickness": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "Thickness of the ruler legend"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "tickWidth": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "space between ruler swatches"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 30
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "tickLength": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "length of ruler tick"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "tickColor": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "labelDistance": {
                      "type": "object",
                      "flags": {
                        "description": "distance of tick labels from ruler"
                      },
                      "keys": {
                        "horizontal": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance of tick labels from ruler when horizontal"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "vertical": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "distance of tick labels from ruler when vertical"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    }
                  }
                },
                "inside": {
                  "type": "object",
                  "flags": {
                    "description": "legend options for when it is positioned inside of the visualization"
                  },
                  "keys": {
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "background color for map key, when positioned inside of visualization"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "position": {
                  "type": "string",
                  "flags": {
                    "description": "Legend position",
                    "only": true
                  },
                  "allow": [
                    "top",
                    "bottom"
                  ]
                },
                "alignment": {
                  "type": "string",
                  "flags": {
                    "description": "Horizontal alignment of legend",
                    "only": true
                  },
                  "allow": [
                    "left",
                    "center"
                  ]
                },
                "swatch": {
                  "type": "object",
                  "flags": {
                    "description": "Swatch styles"
                  },
                  "keys": {
                    "size": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "If a different size is to be specified for round swatches (dot and scatterplots)"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "width": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "height": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "borderRadius": {
                      "type": "string",
                      "flags": {
                        "description": "border radius including unit"
                      },
                      "examples": [
                        "50%"
                      ]
                    },
                    "marginRight": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "space to the right of swatch (i.e between a swatch and its label)"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "text": {
                  "type": "object",
                  "keys": {
                    "marginRight": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "Horizontal space between adjacent legend items"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "useSwatchColor": {
                      "type": "boolean",
                      "flags": {
                        "description": "Use the swatch color for the text"
                      },
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "rowSpacing": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "Vertical space between rows of legend entries (when multiline)"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 50
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "itemSpace": {
                  "type": "number",
                  "flags": {
                    "description": "horizontal space between legend items"
                  }
                },
                "padding": {
                  "type": "object",
                  "flags": {
                    "description": "space above and below legend"
                  },
                  "keys": {
                    "top": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "bottom": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "caption": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for legend caption/title"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string"
                    },
                    "letterSpacing": {
                      "type": "string",
                      "flags": {
                        "unit": "cssValue"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                            "options": {
                              "name": "css value"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "10px",
                        "inherit"
                      ]
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "fontStretch": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "ultra-condensed",
                        "extra-condensed",
                        "condensed",
                        "semi-condensed",
                        "normal",
                        "semi-expanded",
                        "expanded",
                        "extra-expanded",
                        "ultra-expanded",
                        "50%",
                        "62.5%",
                        "75%",
                        "87.5%",
                        "100%",
                        "112.5%",
                        "125%",
                        "150%",
                        "200%"
                      ]
                    },
                    "margin": {
                      "type": "object",
                      "keys": {
                        "horizontal": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "Margin between legend caption and legend, when legend is left/right of caption"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "vertical": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "Margin between legend caption and legend, when caption is above/below legend"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    }
                  }
                },
                "types": {
                  "type": "object",
                  "keys": {
                    "size": {
                      "type": "object",
                      "keys": {
                        "itemSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "the distance between adjacent items in a horizontally stacked legend"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "labels": {
                          "type": "object",
                          "keys": {
                            "color": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "fontSize": {
                              "type": "number",
                              "flags": {
                                "unit": "px"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "fontWeight": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ]
                            },
                            "typeface": {
                              "type": "string"
                            },
                            "letterSpacing": {
                              "type": "string",
                              "flags": {
                                "unit": "cssValue"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                    "options": {
                                      "name": "css value"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "10px",
                                "inherit"
                              ]
                            },
                            "textTransform": {
                              "type": "string",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "uppercase",
                                "capitalize",
                                "lowercase",
                                "full-width",
                                "none"
                              ]
                            },
                            "fontStretch": {
                              "type": "string",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "ultra-condensed",
                                "extra-condensed",
                                "condensed",
                                "semi-condensed",
                                "normal",
                                "semi-expanded",
                                "expanded",
                                "extra-expanded",
                                "ultra-expanded",
                                "50%",
                                "62.5%",
                                "75%",
                                "87.5%",
                                "100%",
                                "112.5%",
                                "125%",
                                "150%",
                                "200%"
                              ]
                            },
                            "distance": {
                              "type": "object",
                              "keys": {
                                "horizontal": {
                                  "type": "number",
                                  "flags": {
                                    "unit": "px",
                                    "description": "distance of value label from symbol when label is beside symbol"
                                  },
                                  "rules": [
                                    {
                                      "name": "min",
                                      "args": {
                                        "limit": 0
                                      }
                                    },
                                    {
                                      "name": "max",
                                      "args": {
                                        "limit": 100
                                      }
                                    }
                                  ],
                                  "preferences": {
                                    "convert": false
                                  }
                                },
                                "vertical": {
                                  "type": "number",
                                  "flags": {
                                    "unit": "px",
                                    "description": "distance of value label from symbol when label is below symbol"
                                  },
                                  "rules": [
                                    {
                                      "name": "min",
                                      "args": {
                                        "limit": 0
                                      }
                                    },
                                    {
                                      "name": "max",
                                      "args": {
                                        "limit": 100
                                      }
                                    }
                                  ],
                                  "preferences": {
                                    "convert": false
                                  }
                                },
                                "toLine": {
                                  "type": "number",
                                  "flags": {
                                    "unit": "px",
                                    "description": "distance of label from connector line for nested size legend"
                                  },
                                  "rules": [
                                    {
                                      "name": "min",
                                      "args": {
                                        "limit": 0
                                      }
                                    },
                                    {
                                      "name": "max",
                                      "args": {
                                        "limit": 100
                                      }
                                    }
                                  ],
                                  "preferences": {
                                    "convert": false
                                  }
                                }
                              }
                            }
                          }
                        },
                        "shapes": {
                          "type": "object",
                          "keys": {
                            "strokeWidth": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "Width of stroke/shape outline"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "stroke": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor",
                                "description": "Color of stroke/shape outline"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "fill": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor",
                                "description": "Fill color for shape"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            }
                          }
                        },
                        "labelConnectorLines": {
                          "type": "object",
                          "flags": {
                            "description": "Color of lines connecting value labels to symbols in nested size legend"
                          },
                          "keys": {
                            "strokeWidth": {
                              "type": "number",
                              "flags": {
                                "unit": "px"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            },
                            "stroke": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor",
                                "description": "Color of lines"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ]
                            },
                            "strokeDashArray": {
                              "type": "string",
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                    "options": {
                                      "name": "stroke-dasharray"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "5 10",
                                "3%,2%,1%"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "annotations": {
              "type": "object",
              "keys": {
                "text": {
                  "type": "object",
                  "flags": {
                    "description": "defaults for text annotations in line charts, scatterplots, column charts and maps"
                  },
                  "keys": {
                    "size": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "bold": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    },
                    "bg": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    },
                    "italic": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    },
                    "underline": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    },
                    "mobileFallback": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    },
                    "align": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "tl",
                        "tc",
                        "tr",
                        "ml",
                        "mc",
                        "mr",
                        "bl",
                        "bc",
                        "br"
                      ]
                    }
                  }
                },
                "range": {
                  "type": "object",
                  "flags": {
                    "unit": "hexColorAndOpacity"
                  },
                  "metas": [
                    {
                      "todo": "defaults for range highlights with type range"
                    }
                  ],
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    }
                  }
                },
                "line": {
                  "type": "object",
                  "flags": {
                    "unit": "hexColorAndOpacity"
                  },
                  "metas": [
                    {
                      "todo": "defaults for range highlights with type line"
                    }
                  ],
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    },
                    "strokeWidth": {
                      "type": "number",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        1,
                        2,
                        3
                      ]
                    },
                    "strokeType": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "solid",
                        "dashed",
                        "dotted"
                      ]
                    }
                  }
                },
                "mobile": {
                  "type": "object",
                  "flags": {
                    "description": "theme styles for the mobile fallback for text annotations"
                  },
                  "keys": {
                    "icons": {
                      "type": "object",
                      "flags": {
                        "description": "styles for the circled numbers replacing the annotation"
                      },
                      "keys": {
                        "background": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "outline": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        }
                      }
                    },
                    "text": {
                      "type": "object",
                      "flags": {
                        "description": "styles for the key shown below the visualization"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "gridFrame": {
              "type": "object",
              "keys": {
                "vertical": {
                  "type": "array",
                  "items": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "axisSide",
                        "oppositeSide",
                        "zero"
                      ]
                    }
                  ]
                },
                "horizontal": {
                  "type": "array",
                  "items": [
                    {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "axisSide",
                        "oppositeSide",
                        "zero"
                      ]
                    }
                  ]
                }
              }
            },
            "tooltip": {
              "type": "object",
              "flags": {
                "description": "Tooltip styles"
              },
              "keys": {
                "text": {
                  "type": "object",
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ],
                      "metas": [
                        {
                          "noDarkModeInvert": true
                        }
                      ]
                    }
                  }
                }
              }
            },
            "highlights": {
              "type": "object",
              "flags": {
                "description": "properties how highlighted elements are handled"
              },
              "keys": {
                "noFade": {
                  "type": "boolean",
                  "flags": {
                    "description": "If true, when a column is highlighted, the color of non-highlighted columns does not change"
                  },
                  "preferences": {
                    "convert": false
                  },
                  "metas": [
                    {
                      "used": [
                        "column-charts"
                      ]
                    }
                  ]
                },
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor",
                    "description": "defines a specific color to be used for the labels of highlighted elements"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                }
              }
            },
            "format": {
              "type": "object",
              "keys": {
                "minusCharacter": {
                  "type": "string",
                  "flags": {
                    "default": "−",
                    "description": "the symbol to be used as minus character"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 2
                      }
                    }
                  ]
                },
                "plusMinusCharacter": {
                  "type": "string",
                  "flags": {
                    "default": "±",
                    "description": "the symbol to be used as plus minus (±) character"
                  },
                  "rules": [
                    {
                      "name": "max",
                      "args": {
                        "limit": 2
                      }
                    }
                  ],
                  "allow": [
                    ""
                  ]
                }
              }
            }
          }
        },
        "column-chart": {
          "type": "object",
          "flags": {
            "description": "settings for our column charts"
          },
          "keys": {
            "axes": {
              "type": "object",
              "flags": {
                "description": "axes settings"
              },
              "keys": {
                "tickDist": {
                  "type": "object",
                  "flags": {
                    "description": "distance of tick text from axis (or tick) line."
                  },
                  "keys": {
                    "vertical": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "Distance between axis tick text and vertical (y) axis"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 30
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "columns": {
              "type": "object",
              "flags": {
                "description": "settings for columns"
              },
              "keys": {
                "blendMode": {
                  "type": "string",
                  "flags": {
                    "description": "blend mode of columns",
                    "default": "unset",
                    "only": true
                  },
                  "allow": [
                    "multiply",
                    "normal",
                    "unset"
                  ]
                },
                "border": {
                  "type": "object",
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor",
                        "description": "color of border around column"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "width": {
                      "type": "number",
                      "flags": {
                        "description": "stroke width of border around column"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ]
                    }
                  }
                }
              }
            },
            "labels": {
              "type": "object",
              "flags": {
                "description": "label settings"
              },
              "keys": {
                "series": {
                  "type": "object",
                  "flags": {
                    "description": "font style for series labels"
                  },
                  "keys": {
                    "dist": {
                      "type": "number",
                      "flags": {
                        "description": "distance of x-axis series label from x-axis line"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ]
                    }
                  }
                },
                "values": {
                  "type": "object",
                  "flags": {
                    "description": "font style for value labels"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "dist": {
                      "type": "number",
                      "flags": {
                        "description": "defines the distance of the value label from the top of the columnn (outside labels only)"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ]
                    }
                  }
                }
              }
            },
            "pattern": {
              "type": "object",
              "flags": {
                "description": "Pattern display for hatched overlays"
              },
              "keys": {
                "strokeWidth": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 4
                      }
                    }
                  ]
                },
                "lineGap": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "d3-area": {
          "type": "object",
          "flags": {
            "description": "settings for area charts"
          },
          "keys": {
            "areas": {
              "type": "object",
              "keys": {
                "blendMode": {
                  "type": "string",
                  "flags": {
                    "description": "blend mode of areas",
                    "default": "unset",
                    "only": true
                  },
                  "allow": [
                    "multiply",
                    "normal",
                    "unset"
                  ]
                }
              }
            },
            "rangePadding": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "padding on left and right of horizontal axis"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "rangePaddingInner": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "range padding when axis tick labels are positioned 'inside'"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "d3-arrow-plot": {
          "type": "object",
          "flags": {
            "description": "settings for our arrow plot"
          },
          "keys": {
            "arrows": {
              "type": "object",
              "flags": {
                "description": "Arrow styles"
              },
              "keys": {
                "thick": {
                  "type": "object",
                  "flags": {
                    "description": "Arrow styles when 'thicker arrows' is activated"
                  },
                  "keys": {
                    "width": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 2,
                        "description": "thickness/line-width of arrows"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "arrowHeadSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 6,
                        "description": "size of the arrow head"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 30
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "borderRadius": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 2,
                        "description": "rounding of the corners on the arrow"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "default": {
                  "type": "object",
                  "flags": {
                    "description": "Arrow styles when 'thicker arrows' is not activated"
                  },
                  "keys": {
                    "width": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 3,
                        "description": "thickness/line-width of arrows"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "arrowHeadSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 8,
                        "description": "size of the arrow head"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 30
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "borderRadius": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 2,
                        "description": "rounding of the corners on the arrow"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "d3-bars": {
          "type": "object",
          "flags": {
            "description": "settings for our bar chart"
          },
          "keys": {
            "axes": {
              "type": "object",
              "flags": {
                "description": "styles for all things related to the axes grid"
              },
              "keys": {
                "gridlines": {
                  "type": "object",
                  "flags": {
                    "description": "styles for all things related to the axes grid"
                  },
                  "keys": {
                    "extendGrid": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "Extend gridlines beyond bars at top and bottom of chart"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "showBaseline": {
                  "type": "boolean",
                  "flags": {
                    "description": "Always show zero line, even if grid is off"
                  },
                  "preferences": {
                    "convert": false
                  }
                }
              }
            },
            "bars": {
              "type": "object",
              "flags": {
                "description": "Bar styles"
              },
              "keys": {
                "barBackground": {
                  "type": "object",
                  "flags": {
                    "description": "Style for optional bar background (if unset, Datawrapper takes care of it)"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    }
                  }
                },
                "barThickness": {
                  "type": "object",
                  "flags": {
                    "description": "Bar thickness, can be set for both default, and 'thick' options"
                  },
                  "keys": {
                    "default": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "thick": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "rowSpacing": {
                  "type": "object",
                  "flags": {
                    "description": "Vertical distance between rows, can be dfined for thick, and not thick bars independently"
                  },
                  "keys": {
                    "default": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -10
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "thick": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -10
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "groups": {
              "type": "object",
              "keys": {
                "spaceBetween": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "Space between groups",
                    "default": 30
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 50
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                }
              }
            },
            "labels": {
              "type": "object",
              "flags": {
                "description": "Styles for any labels in the bar chart"
              },
              "keys": {
                "barLabels": {
                  "type": "object",
                  "flags": {
                    "description": "Font styles for bar labels (i.e the labels on top of the bars)"
                  },
                  "keys": {
                    "units": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "default": "all"
                      },
                      "allow": [
                        "all",
                        "firstOnly"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outside": {
                      "type": "boolean",
                      "flags": {
                        "description": "position labels outside of bars instead of inside"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "padding": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "padding on left/right of label (between bar label and edge of bar)"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    }
                  }
                },
                "groupTitles": {
                  "type": "object",
                  "flags": {
                    "description": "Font styles for group titles"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "paddingBottom": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "space under group titles"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "rowLabels": {
                  "type": "object",
                  "flags": {
                    "description": "styles for row labels"
                  },
                  "keys": {
                    "block": {
                      "type": "object",
                      "flags": {
                        "description": "Special styles for when 'show labels in separate line' (block-labels) is applied"
                      },
                      "keys": {
                        "marginBottom": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "Space below row label"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 50
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "marginTop": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "Space above row label"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 50
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "padding": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "padding between row label and bar"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "directKeyLabels": {
                  "type": "object",
                  "flags": {
                    "description": "styles for direct key labels (e.g overlays, first & last range"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    }
                  }
                }
              }
            },
            "rowDivider": {
              "type": "object",
              "flags": {
                "description": "Styles for optional line that divides rows"
              },
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                },
                "margin": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "Space above and below row dividing line"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "style": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorderStyle"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:solid|dashed|dotted|double)$/",
                        "options": {
                          "name": "css border style"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "solid",
                    "dashed"
                  ]
                },
                "width": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0.0001
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 30
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                }
              }
            },
            "pattern": {
              "type": "object",
              "flags": {
                "description": "Pattern display for hatched overlays"
              },
              "keys": {
                "strokeWidth": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 4
                      }
                    }
                  ]
                },
                "lineGap": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "d3-bars-grouped": {
          "type": "object",
          "flags": {
            "description": "settings for our grouped bar chart"
          },
          "keys": {
            "labels": {
              "type": "object",
              "flags": {
                "description": "Settings for labels in grouped bars"
              },
              "keys": {
                "rowLabels": {
                  "type": "object",
                  "flags": {
                    "description": "Settings for row (i.e group) labels"
                  },
                  "keys": {
                    "verticalAlignment": {
                      "type": "string",
                      "flags": {
                        "default": "middle"
                      },
                      "allow": [
                        "top",
                        "middle"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    }
                  }
                }
              }
            },
            "bars": {
              "type": "object",
              "keys": {
                "barSpacing": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 30
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "barThickness": {
                  "type": "object",
                  "flags": {
                    "description": "Bar thickness, can be set for both default, and 'thick' options"
                  },
                  "keys": {
                    "default": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "rowDivider": {
              "type": "object",
              "flags": {
                "description": "Styles for optional line that divides rows"
              },
              "keys": {
                "margin": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "Space above and below row dividing line"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                }
              }
            }
          }
        },
        "d3-bars-split": {
          "type": "object",
          "flags": {
            "description": "settings for our split bar chart"
          },
          "keys": {
            "labels": {
              "type": "object",
              "keys": {
                "splitLabels": {
                  "type": "object",
                  "flags": {
                    "description": "Font styles for split labels"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "useBarColor": {
                      "type": "boolean",
                      "preferences": {
                        "convert": false
                      }
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "d3-bars-stacked": {
          "type": "object",
          "flags": {
            "description": "settings for our stacked bar chart"
          },
          "keys": {
            "bars": {
              "type": "object",
              "keys": {
                "borders": {
                  "type": "object",
                  "keys": {
                    "width": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 30
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "labels": {
              "type": "object",
              "keys": {
                "totalLabels": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for when total labels are enabled"
                  },
                  "keys": {
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true,
                        "default": 700
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "before": {
                      "type": "object",
                      "flags": {
                        "description": "Styles for when total labels are positioned before bars"
                      },
                      "keys": {
                        "paddingLeft": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "Space between row label and total label"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "paddingRight": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "Space between total label and bars"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "after": {
                      "type": "object",
                      "flags": {
                        "description": "Styles for when total labels are positioned after bars"
                      },
                      "keys": {
                        "paddingLeft": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "Space between bars and total label"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "absoluteValues": {
                      "type": "object",
                      "flags": {
                        "description": "In case `stackPercentages` and `Show absolute values` are turned on, the absolute labels can be styled differently"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "paddingLeft": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 30
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "letterSpacing": {
                          "type": "string",
                          "flags": {
                            "unit": "cssValue"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                "options": {
                                  "name": "css value"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "10px",
                            "inherit"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "d3-dot-plot": {
          "type": "object",
          "flags": {
            "description": "settings for our dot plot"
          },
          "keys": {
            "circles": {
              "type": "object",
              "keys": {
                "size": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "Size of dots"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                }
              }
            },
            "labels": {
              "type": "object",
              "keys": {
                "rowLabels": {
                  "type": "object",
                  "flags": {
                    "description": "Font styles for row labels"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    }
                  }
                }
              }
            },
            "rangeBar": {
              "type": "object",
              "flags": {
                "description": "Style of optional range bar, if unset Datawrapper takes care of it"
              },
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                },
                "height": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 50
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "opacity": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ]
                }
              }
            },
            "spacings": {
              "type": "object",
              "flags": {
                "description": "spacing of something"
              },
              "keys": {
                "rowHeight": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "row height"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                }
              }
            }
          }
        },
        "d3-lines": {
          "type": "object",
          "flags": {
            "description": "settings for line charts"
          },
          "keys": {
            "axes": {
              "type": "object",
              "keys": {
                "gridlines": {
                  "type": "object",
                  "keys": {
                    "verticalAxis": {
                      "type": "boolean",
                      "flags": {
                        "description": "draw y-axis line"
                      },
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "labels": {
              "type": "object",
              "flags": {
                "description": "Labels styles for line chart"
              },
              "keys": {
                "direct": {
                  "type": "object",
                  "flags": {
                    "description": "font style for direct labels"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "lastValue": {
                  "type": "object",
                  "flags": {
                    "description": "font style for 'label last value' labels at end of lines"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "tooltip": {
                  "type": "object",
                  "flags": {
                    "description": "font style for direct labels"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "legend": {
              "type": "object",
              "flags": {
                "description": "legend styles"
              },
              "keys": {
                "swatch": {
                  "type": "object",
                  "keys": {
                    "height": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "height of legend swatch"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 30
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "linecap": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "description": "linecap style of line chart legend swatches"
                      },
                      "allow": [
                        "butt",
                        "round",
                        "square"
                      ]
                    },
                    "width": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "width of legend swatch"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 30
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "lines": {
              "type": "object",
              "flags": {
                "description": "overwrite default line styles"
              },
              "keys": {
                "defaultWidthStyle": {
                  "type": "number",
                  "rules": [
                    {
                      "name": "integer"
                    },
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 4
                      }
                    }
                  ]
                },
                "linecap": {
                  "type": "object",
                  "flags": {
                    "description": "Define linecap style individually for dashed or non-dashed lines"
                  },
                  "keys": {
                    "normal": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "description": "linecap for solid lines",
                        "default": "round"
                      },
                      "allow": [
                        "butt",
                        "round",
                        "square"
                      ]
                    },
                    "dashed": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "description": "linecap for dashed lines",
                        "default": "round"
                      },
                      "allow": [
                        "butt",
                        "round",
                        "square"
                      ]
                    }
                  }
                },
                "widths": {
                  "type": "object",
                  "flags": {
                    "description": "Define selection of preset line widths"
                  },
                  "keys": {
                    "style0": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 2,
                        "description": "line width of 1st preset"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "style1": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 3,
                        "description": "line width of 2nd preset"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "style2": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 4,
                        "description": "line width of 3rd preset"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "style3": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 1,
                        "description": "line width of 4th preset"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "mobileBreakpoint": {
              "type": "number",
              "flags": {
                "unit": "px",
                "default": 350,
                "description": "Breakpoint at which legend labels are forced to color key"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 1000
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "symbols": {
              "type": "object",
              "flags": {
                "description": "Settings for optional line symbols"
              },
              "keys": {
                "outline": {
                  "type": "object",
                  "flags": {
                    "description": "optional outline for line symbols"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "width": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "outline width"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "style": {
                  "type": "string",
                  "flags": {
                    "description": "choice between filled or hollow line symbols",
                    "default": "fill",
                    "only": true
                  },
                  "allow": [
                    "fill",
                    "hollow"
                  ]
                }
              }
            },
            "rangePadding": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "padding on left and right of horizontal axis"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "rangePaddingInner": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "range padding when axis tick labels are positioned 'inside'"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "d3-maps-choropleth": {
          "type": "object",
          "flags": {
            "description": "settings for our choropleth maps"
          },
          "keys": {
            "borders": {
              "type": "object",
              "keys": {
                "hoverOutline": {
                  "type": "object",
                  "keys": {
                    "stroke": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor",
                        "description": "stroke color"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "scale": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "strokeDasharray": {
                      "type": "string",
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                            "options": {
                              "name": "stroke-dasharray"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "5 10",
                        "3%,2%,1%"
                      ]
                    }
                  }
                }
              },
              "patterns": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "only": true
                    },
                    "allow": [
                      "borders",
                      "regions",
                      "innerborders",
                      "exteriorBorders",
                      "outerBorder"
                    ]
                  },
                  "rule": {
                    "type": "object",
                    "keys": {
                      "stroke": {
                        "type": "string",
                        "flags": {
                          "unit": "hexColor",
                          "description": "stroke color"
                        },
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                              "options": {
                                "name": "hex color"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "#ff99bb"
                        ]
                      },
                      "scale": {
                        "type": "number",
                        "flags": {
                          "unit": "px"
                        },
                        "rules": [
                          {
                            "name": "min",
                            "args": {
                              "limit": 0
                            }
                          },
                          {
                            "name": "max",
                            "args": {
                              "limit": 10
                            }
                          }
                        ],
                        "preferences": {
                          "convert": false
                        }
                      },
                      "strokeDasharray": {
                        "type": "string",
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                              "options": {
                                "name": "stroke-dasharray"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "5 10",
                          "3%,2%,1%"
                        ]
                      }
                    }
                  }
                }
              ]
            },
            "labels": {
              "type": "object",
              "keys": {
                "fontWeight": {
                  "type": "any",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "bold",
                    "bolder",
                    "light",
                    "lighter",
                    "normal",
                    "initial",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                "typeface": {
                  "type": "string",
                  "flags": {
                    "description": "font family"
                  }
                },
                "fontSize": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "font size in pixel"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "color": {
                  "type": "object",
                  "keys": {
                    "normal": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "color of labels when dark on light"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "inverted": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "color of labels when light on light"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "outline": {
                  "type": "object",
                  "flags": {
                    "description": "Label outline styles"
                  },
                  "keys": {
                    "color": {
                      "type": "object",
                      "keys": {
                        "normal": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of label outline when dark on light"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "inverted": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of label outline when light on dark"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1",
                        "description": "Opacity of label outline"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    },
                    "strokeWidth": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "Thickness of label outline"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "backgroundLayer": {
              "type": "object",
              "flags": {
                "description": "styles for background map layer (e.g extent) like non-european countries in NUTS map"
              },
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                },
                "opacity": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ]
                }
              }
            },
            "noDataFill": {
              "type": "string",
              "flags": {
                "unit": "hexColor",
                "description": "color of regions when they are not colored in"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                    "options": {
                      "name": "hex color"
                    }
                  }
                }
              ],
              "examples": [
                "#ff99bb"
              ]
            },
            "insetMap": {
              "type": "object",
              "flags": {
                "description": "settings for inset maps in choropleth maps"
              },
              "keys": {
                "view": {
                  "type": "object",
                  "flags": {
                    "description": "Style of minimap view box that contextualises which part of a region / the world is being shown by the main map"
                  },
                  "keys": {
                    "strokeWidth": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "strokeDashArray": {
                      "type": "string",
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                            "options": {
                              "name": "stroke-dasharray"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "5 10",
                        "3%,2%,1%"
                      ]
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of view box/dot that contextualises main map in minimap (both types)"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "label": {
                  "type": "object",
                  "flags": {
                    "description": "typography settings for minimap label"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "globe": {
                  "type": "object",
                  "flags": {
                    "description": "Style properties for the globe style mini-map"
                  },
                  "keys": {
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, globe map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "landOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the outline of land in the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of land outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "globeOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the circular outline around the globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of globe outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "graticule": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the graticule (latitude & longitude lines) on the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of graticule (latitude/longitutde lines) in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "water": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of water in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of land in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of circle behind globe used to provide contrast from backdrop"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "region": {
                  "type": "object",
                  "keys": {
                    "inBox": {
                      "type": "boolean",
                      "flags": {
                        "description": "if set to true, region is positioned centrally within its container"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, region map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outline": {
                      "type": "object",
                      "flags": {
                        "description": "Style of region minimap outline"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        }
                      }
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "landOutline": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region outline in region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "d3-maps-core": {
          "type": "object",
          "flags": {
            "description": "Settings for our maps (Symbols and Choropleth"
          },
          "keys": {
            "borders": {
              "type": "object",
              "patterns": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "only": true
                    },
                    "allow": [
                      "borders",
                      "regions",
                      "innerborders",
                      "exteriorBorders",
                      "outerBorder"
                    ]
                  },
                  "rule": {
                    "type": "object",
                    "keys": {
                      "stroke": {
                        "type": "string",
                        "flags": {
                          "unit": "hexColor",
                          "description": "stroke color"
                        },
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                              "options": {
                                "name": "hex color"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "#ff99bb"
                        ]
                      },
                      "scale": {
                        "type": "number",
                        "flags": {
                          "unit": "px"
                        },
                        "rules": [
                          {
                            "name": "min",
                            "args": {
                              "limit": 0
                            }
                          },
                          {
                            "name": "max",
                            "args": {
                              "limit": 10
                            }
                          }
                        ],
                        "preferences": {
                          "convert": false
                        }
                      },
                      "strokeDasharray": {
                        "type": "string",
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                              "options": {
                                "name": "stroke-dasharray"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "5 10",
                          "3%,2%,1%"
                        ]
                      }
                    }
                  }
                }
              ]
            },
            "backgroundLayer": {
              "type": "object",
              "flags": {
                "description": "styles for background map layer (e.g extent) like non-european countries in NUTS map"
              },
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                },
                "opacity": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ]
                }
              }
            },
            "places": {
              "type": "object",
              "flags": {
                "description": "place label styles"
              },
              "keys": {
                "general": {
                  "type": "object",
                  "flags": {
                    "description": "general style for labels and symbols"
                  },
                  "keys": {
                    "label": {
                      "type": "object",
                      "flags": {
                        "description": "styles for place labels"
                      },
                      "keys": {
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "object",
                          "flags": {
                            "description": "colors - normal or inverted"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "fontWeight": {
                          "type": "object",
                          "keys": {
                            "normal": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "inverted": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            }
                          }
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "translateX": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text left/right to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "translateY": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text top/bottom to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textDecoration": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "underline",
                            "none"
                          ]
                        },
                        "buffer": {
                          "type": "object",
                          "flags": {
                            "description": "a buffer around the place text"
                          },
                          "keys": {
                            "color": {
                              "type": "object",
                              "flags": {
                                "description": "colors - normal or inverted"
                              },
                              "keys": {
                                "normal": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                },
                                "inverted": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                }
                              }
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "strokeWidth": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "width of the buffer"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            }
                          }
                        }
                      }
                    },
                    "symbol": {
                      "type": "object",
                      "flags": {
                        "description": "styles for place symbols"
                      },
                      "keys": {
                        "fill": {
                          "type": "object",
                          "flags": {
                            "description": "symbol fill color"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "stroke": {
                          "type": "object",
                          "flags": {
                            "description": "symbol stroke color"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "strokeWidth": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "symbol stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeOpacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "symbol stroke opacity"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "path": {
                          "type": "string"
                        },
                        "size": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "the size of the symbol in px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    }
                  }
                },
                "point": {
                  "type": "object",
                  "flags": {
                    "description": "specific label and symbol style for points"
                  },
                  "keys": {
                    "label": {
                      "type": "object",
                      "flags": {
                        "description": "styles for place labels"
                      },
                      "keys": {
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "object",
                          "flags": {
                            "description": "colors - normal or inverted"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "fontWeight": {
                          "type": "object",
                          "keys": {
                            "normal": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "inverted": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            }
                          }
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "translateX": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text left/right to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "translateY": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text top/bottom to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textDecoration": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "underline",
                            "none"
                          ]
                        },
                        "buffer": {
                          "type": "object",
                          "flags": {
                            "description": "a buffer around the place text"
                          },
                          "keys": {
                            "color": {
                              "type": "object",
                              "flags": {
                                "description": "colors - normal or inverted"
                              },
                              "keys": {
                                "normal": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                },
                                "inverted": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                }
                              }
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "strokeWidth": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "width of the buffer"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            }
                          }
                        }
                      }
                    },
                    "symbol": {
                      "type": "object",
                      "flags": {
                        "description": "styles for place symbols"
                      },
                      "keys": {
                        "fill": {
                          "type": "object",
                          "flags": {
                            "description": "symbol fill color"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "stroke": {
                          "type": "object",
                          "flags": {
                            "description": "symbol stroke color"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "strokeWidth": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "symbol stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeOpacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "symbol stroke opacity"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "path": {
                          "type": "string"
                        },
                        "size": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "the size of the symbol in px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    }
                  }
                },
                "capital": {
                  "type": "object",
                  "flags": {
                    "description": "specific label and symbol style for capitals"
                  },
                  "keys": {
                    "label": {
                      "type": "object",
                      "flags": {
                        "description": "styles for place labels"
                      },
                      "keys": {
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "object",
                          "flags": {
                            "description": "colors - normal or inverted"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "fontWeight": {
                          "type": "object",
                          "keys": {
                            "normal": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "inverted": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            }
                          }
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "translateX": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text left/right to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "translateY": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text top/bottom to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textDecoration": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "underline",
                            "none"
                          ]
                        },
                        "buffer": {
                          "type": "object",
                          "flags": {
                            "description": "a buffer around the place text"
                          },
                          "keys": {
                            "color": {
                              "type": "object",
                              "flags": {
                                "description": "colors - normal or inverted"
                              },
                              "keys": {
                                "normal": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                },
                                "inverted": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                }
                              }
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "strokeWidth": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "width of the buffer"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            }
                          }
                        }
                      }
                    },
                    "symbol": {
                      "type": "object",
                      "flags": {
                        "description": "styles for place symbols"
                      },
                      "keys": {
                        "fill": {
                          "type": "object",
                          "flags": {
                            "description": "symbol fill color"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "stroke": {
                          "type": "object",
                          "flags": {
                            "description": "symbol stroke color"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "strokeWidth": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "symbol stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeOpacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "symbol stroke opacity"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "path": {
                          "type": "string"
                        },
                        "size": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "the size of the symbol in px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    }
                  }
                },
                "region": {
                  "type": "object",
                  "flags": {
                    "description": "region label styles - no symbol"
                  },
                  "keys": {
                    "label": {
                      "type": "object",
                      "flags": {
                        "description": "styles for place labels"
                      },
                      "keys": {
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "object",
                          "flags": {
                            "description": "colors - normal or inverted"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "fontWeight": {
                          "type": "object",
                          "keys": {
                            "normal": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "inverted": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            }
                          }
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "translateX": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text left/right to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "translateY": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text top/bottom to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textDecoration": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "underline",
                            "none"
                          ]
                        },
                        "buffer": {
                          "type": "object",
                          "flags": {
                            "description": "a buffer around the place text"
                          },
                          "keys": {
                            "color": {
                              "type": "object",
                              "flags": {
                                "description": "colors - normal or inverted"
                              },
                              "keys": {
                                "normal": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                },
                                "inverted": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                }
                              }
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "strokeWidth": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "width of the buffer"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "country": {
                  "type": "object",
                  "flags": {
                    "description": "country label styles - no symbol"
                  },
                  "keys": {
                    "label": {
                      "type": "object",
                      "flags": {
                        "description": "styles for place labels"
                      },
                      "keys": {
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "font size in pixel"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "object",
                          "flags": {
                            "description": "colors - normal or inverted"
                          },
                          "keys": {
                            "normal": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            },
                            "inverted": {
                              "type": "string",
                              "flags": {
                                "unit": "hexColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                    "options": {
                                      "name": "hex color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#ff99bb"
                              ]
                            }
                          }
                        },
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "fontWeight": {
                          "type": "object",
                          "keys": {
                            "normal": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "inverted": {
                              "type": "any",
                              "flags": {
                                "only": true
                              },
                              "allow": [
                                "bold",
                                "bolder",
                                "light",
                                "lighter",
                                "normal",
                                "initial",
                                100,
                                200,
                                300,
                                400,
                                500,
                                600,
                                700,
                                800,
                                900
                              ],
                              "metas": [
                                {
                                  "overrideSupport": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            }
                          }
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontStyle": {
                          "type": "string",
                          "flags": {
                            "default": "normal"
                          },
                          "allow": [
                            "italic",
                            "oblique",
                            "normal"
                          ]
                        },
                        "translateX": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text left/right to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "translateY": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "translate the text top/bottom to align with symbol"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -10
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "textDecoration": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "underline",
                            "none"
                          ]
                        },
                        "buffer": {
                          "type": "object",
                          "flags": {
                            "description": "a buffer around the place text"
                          },
                          "keys": {
                            "color": {
                              "type": "object",
                              "flags": {
                                "description": "colors - normal or inverted"
                              },
                              "keys": {
                                "normal": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                },
                                "inverted": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "hexColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                        "options": {
                                          "name": "hex color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#ff99bb"
                                  ]
                                }
                              }
                            },
                            "opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "strokeWidth": {
                              "type": "number",
                              "flags": {
                                "unit": "px",
                                "description": "width of the buffer"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 100
                                  }
                                }
                              ],
                              "preferences": {
                                "convert": false
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "insetMap": {
              "type": "object",
              "flags": {
                "description": "settings for inset maps in both choropleth and symbol maps"
              },
              "keys": {
                "view": {
                  "type": "object",
                  "flags": {
                    "description": "Style of minimap view box that contextualises which part of a region / the world is being shown by the main map"
                  },
                  "keys": {
                    "strokeWidth": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "strokeDashArray": {
                      "type": "string",
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                            "options": {
                              "name": "stroke-dasharray"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "5 10",
                        "3%,2%,1%"
                      ]
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of view box/dot that contextualises main map in minimap (both types)"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "label": {
                  "type": "object",
                  "flags": {
                    "description": "typography settings for minimap label"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "globe": {
                  "type": "object",
                  "flags": {
                    "description": "Style properties for the globe style mini-map"
                  },
                  "keys": {
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, globe map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "landOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the outline of land in the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of land outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "globeOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the circular outline around the globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of globe outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "graticule": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the graticule (latitude & longitude lines) on the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of graticule (latitude/longitutde lines) in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "water": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of water in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of land in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of circle behind globe used to provide contrast from backdrop"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "region": {
                  "type": "object",
                  "keys": {
                    "inBox": {
                      "type": "boolean",
                      "flags": {
                        "description": "if set to true, region is positioned centrally within its container"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, region map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outline": {
                      "type": "object",
                      "flags": {
                        "description": "Style of region minimap outline"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        }
                      }
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "landOutline": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region outline in region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "d3-maps-symbols": {
          "type": "object",
          "flags": {
            "description": "settings for symbol maps"
          },
          "keys": {
            "regionFill": {
              "type": "string",
              "flags": {
                "unit": "hexColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                    "options": {
                      "name": "hex color"
                    }
                  }
                }
              ],
              "examples": [
                "#ff99bb"
              ]
            },
            "borders": {
              "type": "object",
              "patterns": [
                {
                  "schema": {
                    "type": "string",
                    "flags": {
                      "only": true
                    },
                    "allow": [
                      "borders",
                      "regions",
                      "innerborders",
                      "exteriorBorders",
                      "outerBorder"
                    ]
                  },
                  "rule": {
                    "type": "object",
                    "keys": {
                      "stroke": {
                        "type": "string",
                        "flags": {
                          "unit": "hexColor",
                          "description": "stroke color"
                        },
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                              "options": {
                                "name": "hex color"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "#ff99bb"
                        ]
                      },
                      "scale": {
                        "type": "number",
                        "flags": {
                          "unit": "px"
                        },
                        "rules": [
                          {
                            "name": "min",
                            "args": {
                              "limit": 0
                            }
                          },
                          {
                            "name": "max",
                            "args": {
                              "limit": 10
                            }
                          }
                        ],
                        "preferences": {
                          "convert": false
                        }
                      },
                      "strokeDasharray": {
                        "type": "string",
                        "rules": [
                          {
                            "name": "pattern",
                            "args": {
                              "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                              "options": {
                                "name": "stroke-dasharray"
                              }
                            }
                          }
                        ],
                        "examples": [
                          "5 10",
                          "3%,2%,1%"
                        ]
                      }
                    }
                  }
                }
              ]
            },
            "backgroundLayer": {
              "type": "object",
              "flags": {
                "description": "styles for background map layer (e.g extent) like non-european countries in NUTS map"
              },
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                },
                "opacity": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ]
                }
              }
            },
            "labels": {
              "type": "object",
              "keys": {
                "clusters": {
                  "type": "object",
                  "keys": {
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "symbols": {
              "type": "object",
              "flags": {
                "description": "symbol stroke styles"
              },
              "keys": {
                "blendMode": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "normal",
                    "multiply",
                    "screen",
                    "overlay",
                    "darken",
                    "lighten",
                    "color-dodge",
                    "color-burn",
                    "difference",
                    "exclusion",
                    "hue",
                    "saturation",
                    "color",
                    "luminosity"
                  ]
                },
                "opacity": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ]
                },
                "stroke": {
                  "type": "object",
                  "keys": {
                    "default": {
                      "type": "object",
                      "keys": {
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "default symbol opacity"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "hexColor",
                            "description": "default symbol stroke color"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                "options": {
                                  "name": "hex color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#ff99bb"
                          ]
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "default symbol stroke width"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "hover": {
                      "type": "object",
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "hexColor",
                            "description": "symbol stroke color on hover"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                "options": {
                                  "name": "hex color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#ff99bb"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "symbol stroke opacity on hover"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "symbol stroke width on hover"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "sticky": {
                      "type": "object",
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "hexColor",
                            "description": "stroke color for sticky symbols"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                "options": {
                                  "name": "hex color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#ff99bb"
                          ]
                        },
                        "opacity": {
                          "type": "number",
                          "flags": {
                            "unit": "0..1",
                            "description": "stroke opacity for sticky symbols"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 1
                              }
                            }
                          ]
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "stroke width for sticky symbols"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "insetMap": {
              "type": "object",
              "flags": {
                "description": "settings for inset maps in symbol maps"
              },
              "keys": {
                "view": {
                  "type": "object",
                  "flags": {
                    "description": "Style of minimap view box that contextualises which part of a region / the world is being shown by the main map"
                  },
                  "keys": {
                    "strokeWidth": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "strokeDashArray": {
                      "type": "string",
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                            "options": {
                              "name": "stroke-dasharray"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "5 10",
                        "3%,2%,1%"
                      ]
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of view box/dot that contextualises main map in minimap (both types)"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "label": {
                  "type": "object",
                  "flags": {
                    "description": "typography settings for minimap label"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "globe": {
                  "type": "object",
                  "flags": {
                    "description": "Style properties for the globe style mini-map"
                  },
                  "keys": {
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, globe map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "landOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the outline of land in the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of land outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "globeOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the circular outline around the globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of globe outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "graticule": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the graticule (latitude & longitude lines) on the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of graticule (latitude/longitutde lines) in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "water": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of water in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of land in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of circle behind globe used to provide contrast from backdrop"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "region": {
                  "type": "object",
                  "keys": {
                    "inBox": {
                      "type": "boolean",
                      "flags": {
                        "description": "if set to true, region is positioned centrally within its container"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, region map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outline": {
                      "type": "object",
                      "flags": {
                        "description": "Style of region minimap outline"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        }
                      }
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "landOutline": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region outline in region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "d3-pies": {
          "type": "object",
          "flags": {
            "description": "settings for our pie charts"
          },
          "keys": {
            "mobileBreakpoint": {
              "type": "number",
              "flags": {
                "description": "defines the breakpoint at which layout switches to mobile view"
              }
            },
            "fitchart": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "pie": {
              "type": "object",
              "keys": {
                "marginTop": {
                  "type": "number",
                  "flags": {
                    "description": "Margin above pie container",
                    "default": 10
                  }
                },
                "sliceOutline": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for outline around slices"
                  },
                  "keys": {
                    "width": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            },
            "labelConnectorLines": {
              "type": "object",
              "flags": {
                "description": "Styles for lines connecting outside labels to pie"
              },
              "keys": {
                "width": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "linePoint": {
                  "type": "object",
                  "flags": {
                    "description": "Styles for the dot at the end of the line"
                  },
                  "keys": {
                    "size": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "size (diameter) of points at ends of lines"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            },
            "labels": {
              "type": "object",
              "keys": {
                "general": {
                  "type": "object",
                  "flags": {
                    "description": "General text styles for labels (inside, outside, group, center)"
                  },
                  "keys": {
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "value": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "text": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    }
                  }
                },
                "inside": {
                  "type": "object",
                  "flags": {
                    "description": "Specific styles for inside labels"
                  },
                  "keys": {
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "value": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "text": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    }
                  }
                },
                "outside": {
                  "type": "object",
                  "keys": {
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "value": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "wrap": {
                          "type": "array",
                          "flags": {
                            "sparse": true,
                            "description": "Characters to wrap value label in",
                            "default": [
                              "(",
                              ")"
                            ]
                          },
                          "rules": [
                            {
                              "name": "length",
                              "args": {
                                "limit": 2
                              }
                            }
                          ],
                          "items": [
                            {
                              "type": "string",
                              "flags": {
                                "empty": {
                                  "type": "any",
                                  "flags": {
                                    "only": true
                                  },
                                  "allow": [
                                    ""
                                  ]
                                }
                              }
                            }
                          ]
                        },
                        "byPie": {
                          "type": "boolean",
                          "flags": {
                            "description": "For outside labels, values always on inside (closer to pie)"
                          },
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "text": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    }
                  }
                },
                "center": {
                  "type": "object",
                  "flags": {
                    "description": "Specific styles for center labels in donut charts"
                  },
                  "keys": {
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "value": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "text": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    }
                  }
                },
                "group": {
                  "type": "object",
                  "flags": {
                    "description": "Specific styles for group labels in multiple pies/donuts type"
                  },
                  "keys": {
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": -99
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "value": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "text": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "header": {
                      "type": "object",
                      "flags": {
                        "description": "Text styles for group label header (i.e name of series, when additional information is displayed below)"
                      },
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "name": {
                      "type": "object",
                      "flags": {
                        "description": "Text styles for group label (i.e name of series, when no additional information is displayed below)"
                      },
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    }
                  }
                },
                "legend": {
                  "type": "object",
                  "keys": {
                    "text": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "textTransform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "capitalize",
                            "lowercase",
                            "full-width",
                            "none"
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "lineHeight": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "value": {
                      "type": "object",
                      "keys": {
                        "typeface": {
                          "type": "string",
                          "flags": {
                            "description": "font family"
                          }
                        },
                        "fontSize": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "fontWeight": {
                          "type": "any",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "bold",
                            "bolder",
                            "light",
                            "lighter",
                            "normal",
                            "initial",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        },
                        "letterSpacing": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -99
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 99
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "wrap": {
                          "type": "array",
                          "flags": {
                            "sparse": true,
                            "description": "Characters to wrap value label in",
                            "default": [
                              "(",
                              ")"
                            ]
                          },
                          "rules": [
                            {
                              "name": "length",
                              "args": {
                                "limit": 2
                              }
                            }
                          ],
                          "items": [
                            {
                              "type": "string",
                              "flags": {
                                "empty": {
                                  "type": "any",
                                  "flags": {
                                    "only": true
                                  },
                                  "allow": [
                                    ""
                                  ]
                                }
                              }
                            }
                          ]
                        },
                        "position": {
                          "type": "string",
                          "flags": {
                            "only": true,
                            "default": "afterText"
                          },
                          "allow": [
                            "afterText",
                            "beforeText"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            },
            "footerKey": {
              "type": "object",
              "keys": {
                "numbers": {
                  "type": "object",
                  "keys": {
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "textColor": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "d3-range-plot": {
          "type": "object",
          "flags": {
            "description": "settings for our range plot"
          },
          "keys": {
            "rangeBar": {
              "type": "object",
              "flags": {
                "description": "Style of range bar"
              },
              "keys": {
                "height": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 50
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "opacity": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ]
                }
              }
            },
            "rangeEnds": {
              "type": "object",
              "flags": {
                "description": "Style of range ends"
              },
              "keys": {
                "circles": {
                  "type": "object",
                  "flags": {
                    "description": "styes for range end circles"
                  },
                  "keys": {
                    "outline": {
                      "type": "object",
                      "flags": {
                        "description": "outline range ends"
                      },
                      "keys": {
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "hexColor",
                            "description": "color of outline, if unset, takes color defined by chart settings"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                "options": {
                                  "name": "hex color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#ff99bb"
                          ]
                        },
                        "fill": {
                          "type": "string",
                          "flags": {
                            "unit": "hexColor",
                            "description": "fill color for range ends with outlines, if unset, uses background color"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                                "options": {
                                  "name": "hex color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#ff99bb"
                          ]
                        },
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px",
                            "description": "width of outline"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 1
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "size": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "lines": {
                  "type": "object",
                  "flags": {
                    "description": "styles for range end lines"
                  },
                  "keys": {
                    "height": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "height of line"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "width": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "width of line"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "d3-scatter-plot": {
          "type": "object",
          "flags": {
            "description": "settings for our scatterplots"
          },
          "keys": {
            "labels": {
              "type": "object",
              "keys": {
                "values": {
                  "type": "object",
                  "flags": {
                    "description": "value label settings"
                  },
                  "keys": {
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    }
                  }
                }
              }
            },
            "regressionLine": {
              "type": "object",
              "flags": {
                "description": "style options for regression line"
              },
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ]
                },
                "width": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 10
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "strokeDasharray": {
                  "type": "string",
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                        "options": {
                          "name": "stroke-dasharray"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5 10",
                    "3%,2%,1%"
                  ]
                },
                "opacity": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "grouped-column-chart": {
          "type": "object",
          "flags": {
            "description": "settings for our column charts"
          },
          "keys": {
            "axes": {
              "type": "object",
              "flags": {
                "description": "axes settings"
              },
              "keys": {
                "gridlines": {
                  "type": "object",
                  "keys": {
                    "gapBetweenGroups": {
                      "type": "number",
                      "flags": {
                        "description": "defines a gap width in the horizontal gridlines between adjacent groups"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 30
                          }
                        }
                      ]
                    }
                  }
                }
              }
            },
            "columns": {
              "type": "object",
              "keys": {
                "border": {
                  "type": "object",
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor",
                        "description": "color of border around column"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "width": {
                      "type": "number",
                      "flags": {
                        "description": "stroke width of border around column"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ]
                    }
                  }
                },
                "padding": {
                  "type": "number",
                  "flags": {
                    "description": "space between adjacent columns (ratio, not absolute)"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 4
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "locator-maps": {
          "type": "object",
          "flags": {
            "description": "settings for our locator maps"
          },
          "shared": [
            {
              "type": "object",
              "flags": {
                "description": "All customizable marker properties",
                "id": "pointMarkerSchema"
              },
              "keys": {
                "icon": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "description": "defines a marker symbol by glyph id"
                  },
                  "allow": [
                    "none",
                    "circle",
                    "square",
                    "round-square",
                    "locator",
                    "triangle-up",
                    "triangle-down",
                    "circle-sm",
                    "square-sm",
                    "certificate",
                    "heart",
                    "star-2",
                    "star-1",
                    "asterisk",
                    "city",
                    "bullseye",
                    "quake-1",
                    "quake-2",
                    "target-1",
                    "target",
                    "cancel",
                    "cancel-2",
                    "cancel-1",
                    "fire",
                    "minefield",
                    "boom-1",
                    "boom-3",
                    "boom-2",
                    "boom-4",
                    "boom-5",
                    "bomb",
                    "tank",
                    "jet",
                    "helicopter",
                    "battleship",
                    "army",
                    "rifle",
                    "bomb-1",
                    "rocket-1",
                    "attention",
                    "alert",
                    "home",
                    "home-1",
                    "home-2",
                    "sun-1",
                    "sun-2",
                    "cloud-sun",
                    "cloud-inv",
                    "rain",
                    "hail",
                    "snow",
                    "cloud-flash-inv",
                    "droplet",
                    "water",
                    "umbrella",
                    "snowflake-o",
                    "flash",
                    "flash-1",
                    "airport-1",
                    "airport-2",
                    "airport-3",
                    "subway",
                    "train",
                    "london-underground",
                    "bus",
                    "bus-1",
                    "taxi-1",
                    "taxi-2",
                    "fuel",
                    "anchor",
                    "ship-1",
                    "ship",
                    "heliport",
                    "restaurant",
                    "fast-food",
                    "bar",
                    "cafe",
                    "bed",
                    "bed-2",
                    "art-gallery",
                    "bicycle",
                    "campsite",
                    "cinema",
                    "school",
                    "college",
                    "book",
                    "town-hall",
                    "garden",
                    "giraffe",
                    "ambulance",
                    "medkit",
                    "hospital",
                    "industrial-building",
                    "monument",
                    "museum",
                    "pharmacy",
                    "lighthouse",
                    "toilet",
                    "soccer",
                    "tennis",
                    "swimming",
                    "skiing",
                    "pitch",
                    "golf",
                    "baseball",
                    "roadblock",
                    "police",
                    "post",
                    "lookout-360",
                    "lookout-180",
                    "tree",
                    "tree-1",
                    "tree-2",
                    "mountain",
                    "volcano",
                    "rocket",
                    "extinguisher",
                    "shop",
                    "basket",
                    "religious-islam",
                    "religious-jewish",
                    "religious-christian",
                    "theatre",
                    "flag",
                    "signal",
                    "crosshammer",
                    "stop",
                    "construction",
                    "radioactive",
                    "circle-out-1",
                    "circle-out-2"
                  ]
                },
                "markerColor": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor",
                    "default": "#333333",
                    "description": "Defines the color of the marker symbol"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ],
                  "metas": [
                    {
                      "overrideExclude": [
                        "darkMode"
                      ]
                    }
                  ]
                },
                "anchor": {
                  "type": "string",
                  "flags": {
                    "description": "defines the anchor point of the marker text",
                    "default": "bottom-center",
                    "only": true
                  },
                  "allow": [
                    "middle-right",
                    "middle-center",
                    "middle-left",
                    "top-right",
                    "top-center",
                    "top-left",
                    "bottom-right",
                    "bottom-center",
                    "bottom-left"
                  ]
                },
                "markerSymbol": {
                  "type": "string",
                  "rules": [
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ],
                  "allow": [
                    ""
                  ]
                },
                "labelStyle": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "default": "plain",
                    "description": "defines the marker label style"
                  },
                  "allow": [
                    "box",
                    "box-rounded",
                    "plain"
                  ]
                },
                "text": {
                  "type": "object",
                  "keys": {
                    "bold": {
                      "type": "boolean",
                      "flags": {
                        "default": false
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "italic": {
                      "type": "boolean",
                      "flags": {
                        "default": false
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "uppercase": {
                      "type": "boolean",
                      "flags": {
                        "default": false
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "space": {
                      "type": "boolean",
                      "flags": {
                        "default": false
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor",
                        "default": "#333333",
                        "description": "defines the color of the marker text"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ],
                      "metas": [
                        {
                          "overrideExclude": [
                            "darkMode"
                          ]
                        }
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 14,
                        "description": "defines the font size of the marker text"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "halo": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor",
                        "default": "#f2f3f0",
                        "description": "defines the color of the marker text halo"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})$/",
                            "options": {
                              "name": "hex color with transparency"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ],
                      "metas": [
                        {
                          "overrideExclude": [
                            "darkMode"
                          ]
                        }
                      ]
                    }
                  }
                },
                "offsetY": {
                  "type": "number",
                  "flags": {
                    "default": 0
                  }
                },
                "offsetX": {
                  "type": "number",
                  "flags": {
                    "default": 0
                  }
                },
                "rotate": {
                  "type": "number",
                  "flags": {
                    "default": 0
                  }
                },
                "scale": {
                  "type": "number",
                  "flags": {
                    "default": 1
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 10
                      }
                    }
                  ]
                },
                "markerTextColor": {
                  "type": "string",
                  "flags": {
                    "unit": "hexColor",
                    "default": "#333333"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                        "options": {
                          "name": "hex color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#ff99bb"
                  ],
                  "metas": [
                    {
                      "overrideExclude": [
                        "darkMode"
                      ]
                    }
                  ]
                },
                "visibility": {
                  "type": "object",
                  "keys": {
                    "mobile": {
                      "type": "boolean",
                      "flags": {
                        "default": true
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "desktop": {
                      "type": "boolean",
                      "flags": {
                        "default": true
                      },
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "tooltip": {
                  "type": "object",
                  "keys": {
                    "enabled": {
                      "type": "boolean",
                      "flags": {
                        "default": false
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "text": {
                      "type": "string",
                      "flags": {
                        "default": ""
                      }
                    }
                  }
                },
                "connectorLine": {
                  "type": "object",
                  "keys": {
                    "enabled": {
                      "type": "boolean",
                      "flags": {
                        "default": false
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "arrowHead": {
                      "type": "alternatives",
                      "flags": {
                        "default": "lines"
                      },
                      "matches": [
                        {
                          "schema": {
                            "type": "string",
                            "flags": {
                              "only": true
                            },
                            "allow": [
                              "lines",
                              "triangle"
                            ]
                          }
                        },
                        {
                          "schema": {
                            "type": "boolean",
                            "flags": {
                              "default": false
                            },
                            "preferences": {
                              "convert": false
                            }
                          }
                        }
                      ]
                    },
                    "type": {
                      "type": "string",
                      "flags": {
                        "only": true,
                        "default": "curveRight"
                      },
                      "allow": [
                        "curveRight",
                        "curveLeft",
                        "straight"
                      ]
                    },
                    "targetPadding": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 3
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "stroke": {
                      "type": "number",
                      "flags": {
                        "default": 1
                      },
                      "allow": [
                        1,
                        2,
                        3
                      ]
                    },
                    "lineLength": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "default": 0
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1000
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            }
          ],
          "keys": {
            "insetMap": {
              "type": "object",
              "flags": {
                "description": "settings for inset maps in locator maps"
              },
              "keys": {
                "view": {
                  "type": "object",
                  "flags": {
                    "description": "Style of minimap view box that contextualises which part of a region / the world is being shown by the main map"
                  },
                  "keys": {
                    "strokeWidth": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "strokeDashArray": {
                      "type": "string",
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                            "options": {
                              "name": "stroke-dasharray"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "5 10",
                        "3%,2%,1%"
                      ]
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of view box/dot that contextualises main map in minimap (both types)"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "label": {
                  "type": "object",
                  "flags": {
                    "description": "typography settings for minimap label"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "textTransform": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "uppercase",
                        "capitalize",
                        "lowercase",
                        "full-width",
                        "none"
                      ]
                    },
                    "letterSpacing": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0.0001
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "lineHeight": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                },
                "globe": {
                  "type": "object",
                  "flags": {
                    "description": "Style properties for the globe style mini-map"
                  },
                  "keys": {
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, globe map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "landOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the outline of land in the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of land outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "globeOutline": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the circular outline around the globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of globe outline in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "graticule": {
                      "type": "object",
                      "flags": {
                        "description": "Style properties for the graticule (latitude & longitude lines) on the minimap globe"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        },
                        "color": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor",
                            "description": "Color of graticule (latitude/longitutde lines) in globe minimap"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        }
                      }
                    },
                    "water": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of water in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of land in globe minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of circle behind globe used to provide contrast from backdrop"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "region": {
                  "type": "object",
                  "keys": {
                    "inBox": {
                      "type": "boolean",
                      "flags": {
                        "description": "if set to true, region is positioned centrally within its container"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outerBlur": {
                      "type": "boolean",
                      "flags": {
                        "description": "If true, region map has an outer blur / drop shadow"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "outline": {
                      "type": "object",
                      "flags": {
                        "description": "Style of region minimap outline"
                      },
                      "keys": {
                        "width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0.0001
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 10
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "strokeDashArray": {
                          "type": "string",
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:none|inherit|initial|revert|unset|(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: *(?: |,) *(?:-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?))*)$/",
                                "options": {
                                  "name": "stroke-dasharray"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "5 10",
                            "3%,2%,1%"
                          ]
                        }
                      }
                    },
                    "land": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "landOutline": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of region outline in region minimap"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            },
            "miniMap": {
              "type": "object",
              "flags": {
                "description": "settings for the locator map minimap"
              },
              "keys": {
                "distFromEdge": {
                  "type": "number",
                  "flags": {
                    "description": "defines the distance of the edge of the minimap container to the edge of the map"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 50
                      }
                    }
                  ]
                },
                "padding": {
                  "type": "object",
                  "flags": {
                    "description": "define the minimap container's padding individually for each of its four possible positions"
                  },
                  "keys": {
                    "bottom-right": {
                      "type": "string"
                    },
                    "bottom-left": {
                      "type": "string"
                    },
                    "top-left": {
                      "type": "string"
                    },
                    "top-right": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "defaultPointMarker": {
              "type": "link",
              "flags": {
                "description": "defines the default point marker properties"
              },
              "link": {
                "ref": {
                  "path": [
                    "pointMarkerSchema"
                  ],
                  "type": "local"
                }
              }
            },
            "defaultAreaMarker": {
              "type": "object",
              "flags": {
                "description": "defines the default area marker properties"
              },
              "keys": {
                "fill": {
                  "type": "boolean",
                  "flags": {
                    "description": "if area marker should have fill"
                  }
                },
                "stroke": {
                  "type": "boolean",
                  "flags": {
                    "description": "if area marker should have stroke"
                  }
                },
                "exactShape": {
                  "type": "boolean",
                  "flags": {
                    "description": "if area marker should display with exact shape"
                  }
                },
                "properties": {
                  "type": "object",
                  "keys": {
                    "stroke": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ],
                      "metas": [
                        {
                          "overrideExclude": [
                            "darkMode"
                          ]
                        }
                      ]
                    },
                    "stroke-opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    },
                    "fill": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ],
                      "metas": [
                        {
                          "overrideExclude": [
                            "darkMode"
                          ]
                        }
                      ]
                    },
                    "fill-opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    },
                    "stroke-width": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 20
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "stroke-dasharray": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "100000",
                        "0.2,1",
                        "1,1",
                        "1,2",
                        "1,2.2"
                      ]
                    },
                    "pattern": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "solid",
                        "horizontal",
                        "vertical",
                        "diagonal-up",
                        "diagonal-down"
                      ]
                    },
                    "pattern-line-width": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 20
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "pattern-line-gap": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 20
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "defaultHighlightRegion": {
              "type": "object",
              "flags": {
                "description": "defines the default highlight region properties"
              },
              "keys": {
                "fill": {
                  "type": "boolean",
                  "flags": {
                    "description": "if area marker should have fill"
                  }
                },
                "stroke": {
                  "type": "boolean",
                  "flags": {
                    "description": "if area marker should have stroke"
                  }
                },
                "exactShape": {
                  "type": "boolean",
                  "flags": {
                    "description": "if area marker should display with exact shape"
                  }
                },
                "properties": {
                  "type": "object",
                  "keys": {
                    "stroke": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ],
                      "metas": [
                        {
                          "overrideExclude": [
                            "darkMode"
                          ]
                        }
                      ]
                    },
                    "stroke-opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    },
                    "fill": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ],
                      "metas": [
                        {
                          "overrideExclude": [
                            "darkMode"
                          ]
                        }
                      ]
                    },
                    "fill-opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    },
                    "stroke-width": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 20
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "stroke-dasharray": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "100000",
                        "0.2,1",
                        "1,1",
                        "1,2",
                        "1,2.2"
                      ]
                    },
                    "pattern": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "solid",
                        "horizontal",
                        "vertical",
                        "diagonal-up",
                        "diagonal-down"
                      ]
                    },
                    "pattern-line-width": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 20
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "pattern-line-gap": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 20
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "defaultLineMarker": {
              "type": "object",
              "flags": {
                "description": "defaults the default line marker properties"
              },
              "keys": {
                "exactShape": {
                  "type": "boolean",
                  "flags": {
                    "description": "if area marker should display with exact shape"
                  }
                },
                "properties": {
                  "type": "object",
                  "keys": {
                    "fill": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ],
                      "metas": [
                        {
                          "overrideExclude": [
                            "darkMode"
                          ]
                        }
                      ]
                    },
                    "fill-opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    },
                    "stroke": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ],
                      "metas": [
                        {
                          "overrideExclude": [
                            "darkMode"
                          ]
                        }
                      ]
                    },
                    "stroke-opacity": {
                      "type": "number",
                      "flags": {
                        "unit": "0..1"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 1
                          }
                        }
                      ]
                    },
                    "stroke-width": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 20
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "stroke-dasharray": {
                      "type": "string",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "100000",
                        "0.2,1",
                        "1,1",
                        "1,2",
                        "1,2.2"
                      ]
                    }
                  }
                }
              }
            },
            "markerPresets": {
              "type": "object",
              "flags": {
                "description": "defines custom marker presets that will be available in the marker presets dropdown"
              },
              "patterns": [
                {
                  "regex": "/^/",
                  "rule": {
                    "type": "link",
                    "whens": [
                      {
                        "concat": {
                          "type": "object",
                          "keys": {
                            "label": {
                              "type": "string",
                              "flags": {
                                "presence": "required",
                                "description": "HTML markup for how the preset will appear in the select dropdown"
                              }
                            }
                          }
                        }
                      }
                    ],
                    "link": {
                      "ref": {
                        "path": [
                          "pointMarkerSchema"
                        ],
                        "type": "local"
                      }
                    }
                  }
                }
              ]
            },
            "mapStyles": {
              "type": "array",
              "flags": {
                "description": "custom styles for the vector tile basemap"
              },
              "items": [
                {
                  "type": "object",
                  "keys": {
                    "id": {
                      "type": "string",
                      "flags": {
                        "presence": "required",
                        "description": "id of map style"
                      }
                    },
                    "label": {
                      "type": "string",
                      "flags": {
                        "description": "Name of map style as it appears in the editor"
                      },
                      "whens": [
                        {
                          "ref": {
                            "path": [
                              "id"
                            ]
                          },
                          "is": {
                            "type": "string",
                            "flags": {
                              "only": true
                            },
                            "allow": [
                              "dw-light",
                              "dw-earth",
                              "dw-white",
                              "dw-white-invert"
                            ]
                          },
                          "otherwise": {
                            "type": "any",
                            "flags": {
                              "presence": "required"
                            }
                          }
                        }
                      ]
                    },
                    "colors": {
                      "type": "object",
                      "whens": [
                        {
                          "ref": {
                            "path": [
                              "id"
                            ]
                          },
                          "is": {
                            "type": "string",
                            "flags": {
                              "only": true
                            },
                            "allow": [
                              "dw-light",
                              "dw-earth",
                              "dw-white",
                              "dw-white-invert"
                            ]
                          },
                          "otherwise": {
                            "type": "any",
                            "flags": {
                              "presence": "required"
                            }
                          }
                        }
                      ],
                      "keys": {
                        "highlightRegion": {
                          "type": "object",
                          "flags": {
                            "description": "map style default colors for highlighted region"
                          },
                          "keys": {
                            "stroke": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ],
                              "metas": [
                                {
                                  "overrideExclude": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "stroke-opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "fill": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ],
                              "metas": [
                                {
                                  "overrideExclude": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "fill-opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            }
                          }
                        },
                        "areaMarker": {
                          "type": "object",
                          "flags": {
                            "description": "map style default colors for area marker"
                          },
                          "keys": {
                            "stroke": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ],
                              "metas": [
                                {
                                  "overrideExclude": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "stroke-opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            },
                            "fill": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ],
                              "metas": [
                                {
                                  "overrideExclude": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "fill-opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            }
                          }
                        },
                        "lineMarker": {
                          "type": "object",
                          "flags": {
                            "description": "map style default colors for line marker"
                          },
                          "keys": {
                            "stroke": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ],
                              "metas": [
                                {
                                  "overrideExclude": [
                                    "darkMode"
                                  ]
                                }
                              ]
                            },
                            "stroke-opacity": {
                              "type": "number",
                              "flags": {
                                "unit": "0..1"
                              },
                              "rules": [
                                {
                                  "name": "min",
                                  "args": {
                                    "limit": 0
                                  }
                                },
                                {
                                  "name": "max",
                                  "args": {
                                    "limit": 1
                                  }
                                }
                              ]
                            }
                          }
                        },
                        "markerPresets": {
                          "type": "object",
                          "keys": {
                            "water": {
                              "type": "object",
                              "keys": {
                                "halo": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "color": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                }
                              }
                            },
                            "location": {
                              "type": "object",
                              "keys": {
                                "halo": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "color": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                }
                              }
                            }
                          }
                        },
                        "miniMap": {
                          "type": "object",
                          "keys": {
                            "globe": {
                              "type": "object",
                              "flags": {
                                "description": "Colors of all globe minimap elements"
                              },
                              "keys": {
                                "water": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of water in globe minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "land": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of land in globe minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "landOutline": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of land outline in globe minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "waterOutline": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of circular water outline in globe minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "globeOutline": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of globe outline in globe minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "background": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of circle behind globe used to provide contrast from backdrop"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "graticule": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of graticule (latitude/longitutde lines) in globe minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                }
                              }
                            },
                            "region": {
                              "type": "object",
                              "flags": {
                                "description": "Colors of all region minimap elements"
                              },
                              "keys": {
                                "label": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of region label in region minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "land": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of region minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                },
                                "landOutline": {
                                  "type": "string",
                                  "flags": {
                                    "unit": "cssColor",
                                    "description": "Color of region outline in region minimap"
                                  },
                                  "rules": [
                                    {
                                      "name": "pattern",
                                      "args": {
                                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                        "options": {
                                          "name": "css color"
                                        }
                                      }
                                    }
                                  ],
                                  "examples": [
                                    "#cc0044",
                                    "rgba(200,10,45,0.6)"
                                  ],
                                  "metas": [
                                    {
                                      "noDarkModeInvert": true
                                    }
                                  ]
                                }
                              }
                            },
                            "view": {
                              "type": "string",
                              "flags": {
                                "unit": "cssColor",
                                "description": "Color of view box/dot that contextualises main map in minimap (both types)"
                              },
                              "rules": [
                                {
                                  "name": "pattern",
                                  "args": {
                                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                    "options": {
                                      "name": "css color"
                                    }
                                  }
                                }
                              ],
                              "examples": [
                                "#cc0044",
                                "rgba(200,10,45,0.6)"
                              ],
                              "metas": [
                                {
                                  "noDarkModeInvert": true
                                }
                              ]
                            }
                          }
                        }
                      },
                      "patterns": [
                        {
                          "schema": {
                            "type": "string",
                            "flags": {
                              "only": true
                            },
                            "allow": [
                              "land",
                              "highlight",
                              "boundary-light",
                              "housing-light",
                              "green-light",
                              "green",
                              "green-dark",
                              "mountains-light",
                              "mountains-dark",
                              "ice",
                              "water",
                              "water-outline",
                              "text-water",
                              "text-water-halo",
                              "boundary",
                              "roads-casing",
                              "roads",
                              "roads-light",
                              "tunnels",
                              "roads-dark",
                              "housing",
                              "housing-dark",
                              "text",
                              "text-halo",
                              "housing-3d",
                              "globeWater"
                            ]
                          },
                          "rule": {
                            "type": "string",
                            "flags": {
                              "unit": "cssColor"
                            },
                            "rules": [
                              {
                                "name": "pattern",
                                "args": {
                                  "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                  "options": {
                                    "name": "css color"
                                  }
                                }
                              }
                            ],
                            "examples": [
                              "#cc0044",
                              "rgba(200,10,45,0.6)"
                            ],
                            "metas": [
                              {
                                "noDarkModeInvert": true
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "font": {
                      "type": "string",
                      "flags": {
                        "description": "Font family used for native map labels"
                      }
                    },
                    "text-layout": {
                      "type": "object",
                      "keys": {
                        "size": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "letter-spacing": {
                          "type": "number",
                          "flags": {
                            "unit": "em"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": -500
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 500
                              }
                            }
                          ]
                        },
                        "text-transform": {
                          "type": "string",
                          "flags": {
                            "only": true
                          },
                          "allow": [
                            "uppercase",
                            "lowercase",
                            "none"
                          ]
                        },
                        "halo-width": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        },
                        "halo-blur": {
                          "type": "number",
                          "flags": {
                            "unit": "px"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 100
                              }
                            }
                          ],
                          "preferences": {
                            "convert": false
                          }
                        }
                      }
                    },
                    "layers": {
                      "type": "object",
                      "flags": {
                        "description": "custom styles for specific map layers"
                      },
                      "patterns": [
                        {
                          "schema": {
                            "type": "string",
                            "flags": {
                              "only": true
                            },
                            "allow": [
                              "background",
                              "highlight-layer",
                              "boundaries",
                              "landuse_residential",
                              "landcover_grass",
                              "landcover_ice",
                              "park",
                              "landcover_wood",
                              "mountains_1",
                              "mountains_2",
                              "mountains_3",
                              "mountains_4",
                              "mountains_5",
                              "mountains_6",
                              "waterway",
                              "water-outline",
                              "water",
                              "water_name",
                              "boundary_state",
                              "boundary_country_openmaptiles",
                              "boundary_country",
                              "ocean-outline",
                              "ocean",
                              "road_path-casing",
                              "road_path",
                              "tunnel_minor",
                              "aeroway-area",
                              "aeroway-taxiway",
                              "aeroway-runway",
                              "road_minor-casing",
                              "road_secondary_tertiary-casing",
                              "road_primary-casing",
                              "road_trunk-casing",
                              "road_major_motorway-casing",
                              "road_major_motorway_ramp-casing",
                              "road_minor",
                              "road_secondary_tertiary",
                              "road_primary",
                              "road_trunk",
                              "road_major_motorway",
                              "road_major_motorway_ramp",
                              "road_oneway",
                              "road_oneway_opposite",
                              "tunnel_major",
                              "tunnel_motorway",
                              "railway-transit",
                              "railway",
                              "building",
                              "waterway-bridge-case",
                              "waterway-bridge",
                              "bridge_minor case",
                              "bridge_major_casing",
                              "bridge_minor",
                              "bridge_major",
                              "highlight-outline",
                              "highway_name_other",
                              "highway_name_motorway",
                              "place_other",
                              "place_suburb",
                              "place_village",
                              "place_town",
                              "place_label_city",
                              "place_capital",
                              "place_city_large",
                              "place_state",
                              "place_country_other",
                              "place_country_major",
                              "building3d"
                            ]
                          },
                          "rule": {
                            "type": "object",
                            "keys": {
                              "type": {
                                "type": "string",
                                "flags": {
                                  "only": true
                                },
                                "allow": [
                                  "background",
                                  "fill",
                                  "line",
                                  "symbol",
                                  "fill-extrusion"
                                ]
                              },
                              "source-layer": {
                                "type": "string",
                                "flags": {
                                  "only": true
                                },
                                "allow": [
                                  "admin",
                                  "landuse",
                                  "landcover",
                                  "park",
                                  "relief",
                                  "waterway",
                                  "water",
                                  "water_name",
                                  "boundary",
                                  "transportation",
                                  "aeroway",
                                  "building",
                                  "transportation_name",
                                  "place",
                                  "aerodrome_label"
                                ]
                              },
                              "maxzoom": {
                                "type": "number",
                                "rules": [
                                  {
                                    "name": "min",
                                    "args": {
                                      "limit": 0
                                    }
                                  },
                                  {
                                    "name": "max",
                                    "args": {
                                      "limit": 24
                                    }
                                  }
                                ]
                              },
                              "minzoom": {
                                "type": "number",
                                "rules": [
                                  {
                                    "name": "min",
                                    "args": {
                                      "limit": 0
                                    }
                                  },
                                  {
                                    "name": "max",
                                    "args": {
                                      "limit": 24
                                    }
                                  }
                                ]
                              },
                              "filter": {
                                "type": "array"
                              },
                              "paint": {
                                "type": "object",
                                "keys": {
                                  "background-color": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "unit": "cssColor"
                                          },
                                          "rules": [
                                            {
                                              "name": "pattern",
                                              "args": {
                                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                "options": {
                                                  "name": "css color"
                                                }
                                              }
                                            }
                                          ],
                                          "examples": [
                                            "#cc0044",
                                            "rgba(200,10,45,0.6)"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "unit": "cssColor"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "pattern",
                                                          "args": {
                                                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                            "options": {
                                                              "name": "css color"
                                                            }
                                                          }
                                                        }
                                                      ],
                                                      "examples": [
                                                        "#cc0044",
                                                        "rgba(200,10,45,0.6)"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-antialias": {
                                    "type": "boolean",
                                    "preferences": {
                                      "convert": false
                                    }
                                  },
                                  "fill-color": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "unit": "cssColor"
                                          },
                                          "rules": [
                                            {
                                              "name": "pattern",
                                              "args": {
                                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                "options": {
                                                  "name": "css color"
                                                }
                                              }
                                            }
                                          ],
                                          "examples": [
                                            "#cc0044",
                                            "rgba(200,10,45,0.6)"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "unit": "cssColor"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "pattern",
                                                          "args": {
                                                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                            "options": {
                                                              "name": "css color"
                                                            }
                                                          }
                                                        }
                                                      ],
                                                      "examples": [
                                                        "#cc0044",
                                                        "rgba(200,10,45,0.6)"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-extrusion-color": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "unit": "cssColor"
                                          },
                                          "rules": [
                                            {
                                              "name": "pattern",
                                              "args": {
                                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                "options": {
                                                  "name": "css color"
                                                }
                                              }
                                            }
                                          ],
                                          "examples": [
                                            "#cc0044",
                                            "rgba(200,10,45,0.6)"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "unit": "cssColor"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "pattern",
                                                          "args": {
                                                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                            "options": {
                                                              "name": "css color"
                                                            }
                                                          }
                                                        }
                                                      ],
                                                      "examples": [
                                                        "#cc0044",
                                                        "rgba(200,10,45,0.6)"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-extrusion-base": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "m"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 500
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "m"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 500
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-extrusion-height": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "m"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 500
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "m"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 500
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-extrusion-opacity": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "0..1"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 1
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "0..1"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 1
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-extrusion-vertical-gradient": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "boolean"
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "boolean"
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-extrusion-translate-anchor": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "map",
                                            "viewport",
                                            "auto"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "map",
                                                        "viewport",
                                                        "auto"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-opacity": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "0..1"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 1
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "0..1"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 1
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "fill-outline-color": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "unit": "cssColor"
                                          },
                                          "rules": [
                                            {
                                              "name": "pattern",
                                              "args": {
                                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                "options": {
                                                  "name": "css color"
                                                }
                                              }
                                            }
                                          ],
                                          "examples": [
                                            "#cc0044",
                                            "rgba(200,10,45,0.6)"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "unit": "cssColor"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "pattern",
                                                          "args": {
                                                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                            "options": {
                                                              "name": "css color"
                                                            }
                                                          }
                                                        }
                                                      ],
                                                      "examples": [
                                                        "#cc0044",
                                                        "rgba(200,10,45,0.6)"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "icon-opacity": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "0..1"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 1
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "0..1"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 1
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "line-blur": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 500
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 500
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "line-color": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "unit": "cssColor"
                                          },
                                          "rules": [
                                            {
                                              "name": "pattern",
                                              "args": {
                                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                "options": {
                                                  "name": "css color"
                                                }
                                              }
                                            }
                                          ],
                                          "examples": [
                                            "#cc0044",
                                            "rgba(200,10,45,0.6)"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "unit": "cssColor"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "pattern",
                                                          "args": {
                                                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                            "options": {
                                                              "name": "css color"
                                                            }
                                                          }
                                                        }
                                                      ],
                                                      "examples": [
                                                        "#cc0044",
                                                        "rgba(200,10,45,0.6)"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "line-dasharray": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "array",
                                          "rules": [
                                            {
                                              "name": "length",
                                              "args": {
                                                "limit": 2
                                              }
                                            }
                                          ],
                                          "items": [
                                            {
                                              "type": "number",
                                              "rules": [
                                                {
                                                  "name": "min",
                                                  "args": {
                                                    "limit": 0
                                                  }
                                                }
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "array",
                                                      "rules": [
                                                        {
                                                          "name": "length",
                                                          "args": {
                                                            "limit": 2
                                                          }
                                                        }
                                                      ],
                                                      "items": [
                                                        {
                                                          "type": "number",
                                                          "rules": [
                                                            {
                                                              "name": "min",
                                                              "args": {
                                                                "limit": 0
                                                              }
                                                            }
                                                          ]
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "line-gap-width": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "px"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 500
                                              }
                                            }
                                          ],
                                          "preferences": {
                                            "convert": false
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "px"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 500
                                                          }
                                                        }
                                                      ],
                                                      "preferences": {
                                                        "convert": false
                                                      }
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "line-offset": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number"
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number"
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "line-opacity": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "0..1"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 1
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "0..1"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 1
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "line-width": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "px"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 500
                                              }
                                            }
                                          ],
                                          "preferences": {
                                            "convert": false
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "px"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 500
                                                          }
                                                        }
                                                      ],
                                                      "preferences": {
                                                        "convert": false
                                                      }
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-color": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "unit": "cssColor"
                                          },
                                          "rules": [
                                            {
                                              "name": "pattern",
                                              "args": {
                                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                "options": {
                                                  "name": "css color"
                                                }
                                              }
                                            }
                                          ],
                                          "examples": [
                                            "#cc0044",
                                            "rgba(200,10,45,0.6)"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "unit": "cssColor"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "pattern",
                                                          "args": {
                                                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                            "options": {
                                                              "name": "css color"
                                                            }
                                                          }
                                                        }
                                                      ],
                                                      "examples": [
                                                        "#cc0044",
                                                        "rgba(200,10,45,0.6)"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-halo-blur": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "px"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 500
                                              }
                                            }
                                          ],
                                          "preferences": {
                                            "convert": false
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "px"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 500
                                                          }
                                                        }
                                                      ],
                                                      "preferences": {
                                                        "convert": false
                                                      }
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-halo-color": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "unit": "cssColor"
                                          },
                                          "rules": [
                                            {
                                              "name": "pattern",
                                              "args": {
                                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                "options": {
                                                  "name": "css color"
                                                }
                                              }
                                            }
                                          ],
                                          "examples": [
                                            "#cc0044",
                                            "rgba(200,10,45,0.6)"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "unit": "cssColor"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "pattern",
                                                          "args": {
                                                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                                            "options": {
                                                              "name": "css color"
                                                            }
                                                          }
                                                        }
                                                      ],
                                                      "examples": [
                                                        "#cc0044",
                                                        "rgba(200,10,45,0.6)"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-halo-width": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "px"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 500
                                              }
                                            }
                                          ],
                                          "preferences": {
                                            "convert": false
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "px"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 500
                                                          }
                                                        }
                                                      ],
                                                      "preferences": {
                                                        "convert": false
                                                      }
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-opacity": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "0..1"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 1
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "0..1"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 1
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-translate": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "array",
                                          "rules": [
                                            {
                                              "name": "length",
                                              "args": {
                                                "limit": 2
                                              }
                                            }
                                          ],
                                          "items": [
                                            {
                                              "type": "number"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "array",
                                                      "rules": [
                                                        {
                                                          "name": "length",
                                                          "args": {
                                                            "limit": 2
                                                          }
                                                        }
                                                      ],
                                                      "items": [
                                                        {
                                                          "type": "number"
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                }
                              },
                              "layout": {
                                "type": "object",
                                "keys": {
                                  "line-cap": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "butt",
                                            "round",
                                            "square"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "butt",
                                                        "round",
                                                        "square"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "icon-image": {
                                    "type": "alternatives",
                                    "metas": [
                                      {
                                        "noDarkModeInvert": true,
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ],
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "allow": [
                                            ""
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "allow": [
                                                        ""
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "icon-padding": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "px"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 1000
                                              }
                                            }
                                          ],
                                          "preferences": {
                                            "convert": false
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "px"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 1000
                                                          }
                                                        }
                                                      ],
                                                      "preferences": {
                                                        "convert": false
                                                      }
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "icon-rotate": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number"
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number"
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "icon-size": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 100
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 100
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "icon-rotation-alignment": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "map",
                                            "viewport",
                                            "auto"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "map",
                                                        "viewport",
                                                        "auto"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "icon-offset": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "array",
                                          "flags": {
                                            "description": "2D offset, e.g for icon or text from anchor point"
                                          },
                                          "rules": [
                                            {
                                              "name": "length",
                                              "args": {
                                                "limit": 2
                                              }
                                            }
                                          ],
                                          "items": [
                                            {
                                              "type": "number"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "array",
                                                      "flags": {
                                                        "description": "2D offset, e.g for icon or text from anchor point"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "length",
                                                          "args": {
                                                            "limit": 2
                                                          }
                                                        }
                                                      ],
                                                      "items": [
                                                        {
                                                          "type": "number"
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "icon-text-fit": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true,
                                            "description": "mapbox default: none"
                                          },
                                          "allow": [
                                            "none",
                                            "width",
                                            "height",
                                            "both"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true,
                                                        "description": "mapbox default: none"
                                                      },
                                                      "allow": [
                                                        "none",
                                                        "width",
                                                        "height",
                                                        "both"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "line-join": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "bevel",
                                            "round",
                                            "miter"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "bevel",
                                                        "round",
                                                        "miter"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "symbol-placement": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "point",
                                            "line",
                                            "line-center"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "point",
                                                        "line",
                                                        "line-center"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "symbol-spacing": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "px"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 1
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 10000
                                              }
                                            }
                                          ],
                                          "preferences": {
                                            "convert": false
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "px"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 1
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 10000
                                                          }
                                                        }
                                                      ],
                                                      "preferences": {
                                                        "convert": false
                                                      }
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-anchor": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "center",
                                            "left",
                                            "right",
                                            "top",
                                            "bottom",
                                            "top-left",
                                            "top-right",
                                            "bottom-left",
                                            "bottom-right"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "center",
                                                        "left",
                                                        "right",
                                                        "top",
                                                        "bottom",
                                                        "top-left",
                                                        "top-right",
                                                        "bottom-left",
                                                        "bottom-right"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-font": {
                                    "type": "array",
                                    "items": [
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "text-justify": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "left",
                                            "right",
                                            "center",
                                            "auto"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "left",
                                                        "right",
                                                        "center",
                                                        "auto"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-letter-spacing": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "em"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": -20
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 500
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "em"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": -20
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 500
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-line-height": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "em"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 100
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "em"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 100
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-max-angle": {
                                    "type": "number"
                                  },
                                  "text-max-width": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "em"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 1000
                                              }
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "em"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 1000
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-offset": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "array",
                                          "flags": {
                                            "description": "2D offset, e.g for icon or text from anchor point"
                                          },
                                          "rules": [
                                            {
                                              "name": "length",
                                              "args": {
                                                "limit": 2
                                              }
                                            }
                                          ],
                                          "items": [
                                            {
                                              "type": "number"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "array",
                                                      "flags": {
                                                        "description": "2D offset, e.g for icon or text from anchor point"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "length",
                                                          "args": {
                                                            "limit": 2
                                                          }
                                                        }
                                                      ],
                                                      "items": [
                                                        {
                                                          "type": "number"
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-pitch-alignment": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "map",
                                            "viewport",
                                            "auto"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "map",
                                                        "viewport",
                                                        "auto"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-padding": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "px"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 100
                                              }
                                            }
                                          ],
                                          "preferences": {
                                            "convert": false
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "px"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 100
                                                          }
                                                        }
                                                      ],
                                                      "preferences": {
                                                        "convert": false
                                                      }
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-rotate": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number"
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number"
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-rotation-alignment": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "map",
                                            "viewport",
                                            "auto"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "map",
                                                        "viewport",
                                                        "auto"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-size": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "number",
                                          "flags": {
                                            "unit": "px"
                                          },
                                          "rules": [
                                            {
                                              "name": "min",
                                              "args": {
                                                "limit": 0
                                              }
                                            },
                                            {
                                              "name": "max",
                                              "args": {
                                                "limit": 100
                                              }
                                            }
                                          ],
                                          "preferences": {
                                            "convert": false
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number",
                                                      "flags": {
                                                        "unit": "px"
                                                      },
                                                      "rules": [
                                                        {
                                                          "name": "min",
                                                          "args": {
                                                            "limit": 0
                                                          }
                                                        },
                                                        {
                                                          "name": "max",
                                                          "args": {
                                                            "limit": 100
                                                          }
                                                        }
                                                      ],
                                                      "preferences": {
                                                        "convert": false
                                                      }
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "text-transform": {
                                    "type": "alternatives",
                                    "matches": [
                                      {
                                        "schema": {
                                          "type": "string",
                                          "flags": {
                                            "only": true
                                          },
                                          "allow": [
                                            "uppercase",
                                            "lowercase",
                                            "none"
                                          ]
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "object",
                                          "keys": {
                                            "base": {
                                              "type": "number"
                                            },
                                            "stops": {
                                              "type": "array",
                                              "items": [
                                                {
                                                  "type": "array",
                                                  "items": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "string",
                                                      "flags": {
                                                        "only": true
                                                      },
                                                      "allow": [
                                                        "uppercase",
                                                        "lowercase",
                                                        "none"
                                                      ]
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "schema": {
                                          "type": "array",
                                          "metas": [
                                            {
                                              "todo": "Write more precise definition(?)"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            },
            "tooltip": {
              "type": "object",
              "flags": {
                "description": "custom styles for locator map tooltip"
              },
              "keys": {
                "maxWidth": {
                  "type": "number",
                  "flags": {
                    "description": "Max width of tooltip, in pixels",
                    "default": "200"
                  }
                }
              }
            },
            "icons": {
              "type": "object",
              "flags": {
                "description": "For customizing the icon options"
              },
              "keys": {
                "add": {
                  "type": "array",
                  "flags": {
                    "description": "add new icons to selection"
                  },
                  "items": [
                    {
                      "type": "object",
                      "keys": {
                        "id": {
                          "type": "string",
                          "invalid": [
                            "none",
                            "circle",
                            "square",
                            "round-square",
                            "locator",
                            "triangle-up",
                            "triangle-down",
                            "circle-sm",
                            "square-sm",
                            "certificate",
                            "heart",
                            "star-2",
                            "star-1",
                            "asterisk",
                            "city",
                            "bullseye",
                            "quake-1",
                            "quake-2",
                            "target-1",
                            "target",
                            "cancel",
                            "cancel-2",
                            "cancel-1",
                            "fire",
                            "minefield",
                            "boom-1",
                            "boom-3",
                            "boom-2",
                            "boom-4",
                            "boom-5",
                            "bomb",
                            "tank",
                            "jet",
                            "helicopter",
                            "battleship",
                            "army",
                            "rifle",
                            "bomb-1",
                            "rocket-1",
                            "attention",
                            "alert",
                            "home",
                            "home-1",
                            "home-2",
                            "sun-1",
                            "sun-2",
                            "cloud-sun",
                            "cloud-inv",
                            "rain",
                            "hail",
                            "snow",
                            "cloud-flash-inv",
                            "droplet",
                            "water",
                            "umbrella",
                            "snowflake-o",
                            "flash",
                            "flash-1",
                            "airport-1",
                            "airport-2",
                            "airport-3",
                            "subway",
                            "train",
                            "london-underground",
                            "bus",
                            "bus-1",
                            "taxi-1",
                            "taxi-2",
                            "fuel",
                            "anchor",
                            "ship-1",
                            "ship",
                            "heliport",
                            "restaurant",
                            "fast-food",
                            "bar",
                            "cafe",
                            "bed",
                            "bed-2",
                            "art-gallery",
                            "bicycle",
                            "campsite",
                            "cinema",
                            "school",
                            "college",
                            "book",
                            "town-hall",
                            "garden",
                            "giraffe",
                            "ambulance",
                            "medkit",
                            "hospital",
                            "industrial-building",
                            "monument",
                            "museum",
                            "pharmacy",
                            "lighthouse",
                            "toilet",
                            "soccer",
                            "tennis",
                            "swimming",
                            "skiing",
                            "pitch",
                            "golf",
                            "baseball",
                            "roadblock",
                            "police",
                            "post",
                            "lookout-360",
                            "lookout-180",
                            "tree",
                            "tree-1",
                            "tree-2",
                            "mountain",
                            "volcano",
                            "rocket",
                            "extinguisher",
                            "shop",
                            "basket",
                            "religious-islam",
                            "religious-jewish",
                            "religious-christian",
                            "theatre",
                            "flag",
                            "signal",
                            "crosshammer",
                            "stop",
                            "construction",
                            "radioactive",
                            "circle-out-1",
                            "circle-out-2"
                          ]
                        },
                        "path": {
                          "type": "string",
                          "flags": {
                            "description": "SVG path string for the icon"
                          }
                        },
                        "width": {
                          "type": "number"
                        },
                        "height": {
                          "type": "number"
                        },
                        "horiz-adv-x": {
                          "type": "number"
                        },
                        "scale": {
                          "type": "number",
                          "flags": {
                            "presence": "optional"
                          },
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 5
                              }
                            }
                          ]
                        },
                        "vCenter": {
                          "type": "number",
                          "flags": {
                            "presence": "optional"
                          }
                        },
                        "textBaseline": {
                          "type": "number",
                          "rules": [
                            {
                              "name": "min",
                              "args": {
                                "limit": 0
                              }
                            },
                            {
                              "name": "max",
                              "args": {
                                "limit": 0
                              }
                            }
                          ]
                        },
                        "after": {
                          "type": "string",
                          "flags": {
                            "presence": "optional",
                            "description": "id of default icon to add this icon after",
                            "only": true
                          },
                          "allow": [
                            "airport-1",
                            "airport-2",
                            "airport-3",
                            "alert",
                            "ambulance",
                            "anchor",
                            "army",
                            "art-gallery",
                            "asterisk",
                            "attention",
                            "bar",
                            "baseball",
                            "basket",
                            "battleship",
                            "bed",
                            "bed-2",
                            "bicycle",
                            "bomb",
                            "bomb-1",
                            "book",
                            "boom-1",
                            "boom-2",
                            "boom-3",
                            "boom-4",
                            "boom-5",
                            "bullseye",
                            "bus",
                            "bus-1",
                            "cafe",
                            "campsite",
                            "cancel",
                            "cancel-1",
                            "cancel-2",
                            "certificate",
                            "cinema",
                            "circle",
                            "circle-out-1",
                            "circle-out-2",
                            "circle-sm",
                            "city",
                            "cloud-flash-inv",
                            "cloud-inv",
                            "cloud-sun",
                            "college",
                            "construction",
                            "crosshammer",
                            "droplet",
                            "extinguisher",
                            "fast-food",
                            "fire",
                            "flag",
                            "flash",
                            "flash-1",
                            "fuel",
                            "garden",
                            "giraffe",
                            "golf",
                            "hail",
                            "heart",
                            "helicopter",
                            "heliport",
                            "home",
                            "home-1",
                            "home-2",
                            "hospital",
                            "industrial-building",
                            "jet",
                            "lighthouse",
                            "locator",
                            "london-underground",
                            "lookout-180",
                            "lookout-360",
                            "medkit",
                            "minefield",
                            "monument",
                            "mountain",
                            "museum",
                            "none",
                            "pharmacy",
                            "pitch",
                            "police",
                            "post",
                            "quake-1",
                            "quake-2",
                            "radioactive",
                            "rain",
                            "religious-christian",
                            "religious-islam",
                            "religious-jewish",
                            "restaurant",
                            "rifle",
                            "roadblock",
                            "rocket",
                            "rocket-1",
                            "round-square",
                            "school",
                            "ship",
                            "ship-1",
                            "shop",
                            "signal",
                            "skiing",
                            "snow",
                            "snowflake-o",
                            "soccer",
                            "square",
                            "square-sm",
                            "star-1",
                            "star-2",
                            "stop",
                            "subway",
                            "sun-1",
                            "sun-2",
                            "swimming",
                            "tank",
                            "target",
                            "target-1",
                            "taxi-1",
                            "taxi-2",
                            "tennis",
                            "theatre",
                            "toilet",
                            "town-hall",
                            "train",
                            "tree",
                            "tree-1",
                            "tree-2",
                            "triangle-down",
                            "triangle-up",
                            "umbrella",
                            "volcano",
                            "water"
                          ]
                        }
                      }
                    }
                  ]
                },
                "hide": {
                  "type": "array",
                  "flags": {
                    "description": "hide/exclude marker icons from selection"
                  },
                  "items": [
                    {
                      "type": "string",
                      "flags": {
                        "description": "id of icon to hide",
                        "only": true
                      },
                      "allow": [
                        "airport-1",
                        "airport-2",
                        "airport-3",
                        "alert",
                        "ambulance",
                        "anchor",
                        "army",
                        "art-gallery",
                        "asterisk",
                        "attention",
                        "bar",
                        "baseball",
                        "basket",
                        "battleship",
                        "bed",
                        "bed-2",
                        "bicycle",
                        "bomb",
                        "bomb-1",
                        "book",
                        "boom-1",
                        "boom-2",
                        "boom-3",
                        "boom-4",
                        "boom-5",
                        "bullseye",
                        "bus",
                        "bus-1",
                        "cafe",
                        "campsite",
                        "cancel",
                        "cancel-1",
                        "cancel-2",
                        "certificate",
                        "cinema",
                        "circle",
                        "circle-out-1",
                        "circle-out-2",
                        "circle-sm",
                        "city",
                        "cloud-flash-inv",
                        "cloud-inv",
                        "cloud-sun",
                        "college",
                        "construction",
                        "crosshammer",
                        "droplet",
                        "extinguisher",
                        "fast-food",
                        "fire",
                        "flag",
                        "flash",
                        "flash-1",
                        "fuel",
                        "garden",
                        "giraffe",
                        "golf",
                        "hail",
                        "heart",
                        "helicopter",
                        "heliport",
                        "home",
                        "home-1",
                        "home-2",
                        "hospital",
                        "industrial-building",
                        "jet",
                        "lighthouse",
                        "locator",
                        "london-underground",
                        "lookout-180",
                        "lookout-360",
                        "medkit",
                        "minefield",
                        "monument",
                        "mountain",
                        "museum",
                        "pharmacy",
                        "pitch",
                        "police",
                        "post",
                        "quake-1",
                        "quake-2",
                        "radioactive",
                        "rain",
                        "religious-christian",
                        "religious-islam",
                        "religious-jewish",
                        "restaurant",
                        "rifle",
                        "roadblock",
                        "rocket",
                        "rocket-1",
                        "round-square",
                        "school",
                        "ship",
                        "ship-1",
                        "shop",
                        "signal",
                        "skiing",
                        "snow",
                        "snowflake-o",
                        "soccer",
                        "square",
                        "square-sm",
                        "star-1",
                        "star-2",
                        "stop",
                        "subway",
                        "sun-1",
                        "sun-2",
                        "swimming",
                        "tank",
                        "target",
                        "target-1",
                        "taxi-1",
                        "taxi-2",
                        "tennis",
                        "theatre",
                        "toilet",
                        "town-hall",
                        "train",
                        "tree",
                        "tree-1",
                        "tree-2",
                        "triangle-down",
                        "triangle-up",
                        "umbrella",
                        "volcano",
                        "water"
                      ]
                    }
                  ]
                }
              }
            }
          }
        },
        "pie-chart": {
          "type": "object",
          "flags": {
            "description": "settings for our (old) pie chart"
          },
          "keys": {
            "fitChart": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "labels": {
              "type": "object",
              "keys": {
                "values": {
                  "type": "object",
                  "keys": {
                    "wrapValue": {
                      "type": "array",
                      "rules": [
                        {
                          "name": "length",
                          "args": {
                            "limit": 2
                          }
                        }
                      ],
                      "items": [
                        {
                          "type": "string"
                        }
                      ]
                    },
                    "valuesByPie": {
                      "type": "boolean",
                      "flags": {
                        "description": "For outside labels, values always on inside (closer to pie)"
                      },
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "stacked-column-chart": {
          "type": "object",
          "flags": {
            "description": "settings for our column charts"
          },
          "keys": {
            "axes": {
              "type": "object",
              "flags": {
                "description": "axes settings"
              },
              "keys": {
                "themeGrid": {
                  "type": "object",
                  "flags": {
                    "description": "what is a theme grid?"
                  },
                  "keys": {
                    "yTicks": {
                      "type": "number",
                      "flags": {
                        "description": "Ticks instead of gridlines, defines length"
                      }
                    },
                    "yGridlines": {
                      "type": "number",
                      "flags": {
                        "description": "Ticks instead of gridlines, defines length"
                      }
                    },
                    "bottomLine": {
                      "type": "boolean",
                      "flags": {
                        "default": false
                      },
                      "preferences": {
                        "convert": false
                      }
                    }
                  }
                }
              }
            },
            "columns": {
              "type": "object",
              "keys": {
                "border": {
                  "type": "object",
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor",
                        "description": "color of border around column"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "width": {
                      "type": "number",
                      "flags": {
                        "description": "stroke width of border around column"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 10
                          }
                        }
                      ]
                    }
                  }
                }
              }
            },
            "connectBars": {
              "type": "object",
              "flags": {
                "description": "customization settings for optional area connecting columns"
              },
              "keys": {
                "opacity": {
                  "type": "number",
                  "flags": {
                    "unit": "0..1",
                    "description": "opacity of connecting areas"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 1
                      }
                    }
                  ]
                }
              }
            },
            "labels": {
              "type": "object",
              "flags": {
                "description": "customization settings for stacked column chart labels"
              },
              "keys": {
                "direct": {
                  "type": "object",
                  "keys": {
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                },
                "totals": {
                  "type": "object",
                  "flags": {
                    "description": "font style for totals labels"
                  },
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "hexColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/",
                            "options": {
                              "name": "hex color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#ff99bb"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px",
                        "description": "font size in pixel"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 1
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 99
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "typeface": {
                      "type": "string",
                      "flags": {
                        "description": "font family"
                      }
                    },
                    "dist": {
                      "type": "number",
                      "flags": {
                        "description": "defines the distance of the value label from the top of the columnn (outside labels only)"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 50
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "tables": {
          "type": "object",
          "flags": {
            "description": "settings for tables visualization"
          },
          "keys": {
            "rank": {
              "type": "object",
              "flags": {
                "description": "Text styles for rank column"
              },
              "keys": {
                "fontSize": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "fontWeight": {
                  "type": "any",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "bold",
                    "bolder",
                    "light",
                    "lighter",
                    "normal",
                    "initial",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                }
              }
            },
            "mobileBreakpoint": {
              "type": "number"
            },
            "header": {
              "type": "object",
              "keys": {
                "vertical": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder",
                    "description": "draw vertical lines through header"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "font": {
                  "type": "string",
                  "flags": {
                    "description": "Full description of font"
                  },
                  "examples": [
                    "15px arial, sans-serif"
                  ]
                },
                "textTransform": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "uppercase",
                    "capitalize",
                    "lowercase",
                    "full-width",
                    "none"
                  ]
                },
                "verticalAlign": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "baseline",
                    "sub",
                    "super",
                    "text-top",
                    "text-bottom",
                    "middle",
                    "top",
                    "bottom"
                  ]
                },
                "padding": {
                  "type": "string",
                  "flags": {
                    "description": "the vertical padding of the header cells"
                  }
                },
                "lineHeight": {
                  "type": "string",
                  "flags": {
                    "unit": "cssValue",
                    "description": "base line height for table header cells"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                        "options": {
                          "name": "css value"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "10px",
                    "inherit"
                  ]
                }
              }
            },
            "cells": {
              "type": "object",
              "keys": {
                "padding": {
                  "type": "object",
                  "keys": {
                    "force": {
                      "type": "boolean",
                      "flags": {
                        "description": "When true, padding is forced on all cells, including left/right columns, regardless of other settings"
                      },
                      "preferences": {
                        "convert": false
                      }
                    },
                    "horizontal": {
                      "type": "string",
                      "flags": {
                        "description": "horizontal cell padding"
                      }
                    },
                    "vertical": {
                      "type": "string",
                      "flags": {
                        "description": "vertical cell padding"
                      }
                    }
                  }
                }
              }
            },
            "fontSize": {
              "type": "string",
              "flags": {
                "description": "base font size for table text"
              }
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true,
                "description": "base font weight for table text"
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor",
                "description": "default table text color"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "lineHeight": {
              "type": "string",
              "flags": {
                "unit": "cssValue",
                "description": "base line height for table text"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                    "options": {
                      "name": "css value"
                    }
                  }
                }
              ],
              "examples": [
                "10px",
                "inherit"
              ]
            },
            "margin": {
              "type": "string",
              "flags": {
                "description": "table margin"
              }
            },
            "compact": {
              "type": "object",
              "keys": {
                "margin": {
                  "type": "string",
                  "flags": {
                    "unit": "cssValue",
                    "description": "Margin used for compact mode"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                        "options": {
                          "name": "css value"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "10px",
                    "inherit",
                    "10px"
                  ]
                },
                "header": {
                  "type": "object",
                  "keys": {
                    "padding": {
                      "type": "string",
                      "flags": {
                        "unit": "cssValue",
                        "description": "Vertical cell padding on header cells, in 'compact' mode"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                            "options": {
                              "name": "css value"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "10px",
                        "inherit"
                      ]
                    }
                  }
                },
                "cells": {
                  "type": "object",
                  "keys": {
                    "padding": {
                      "type": "object",
                      "keys": {
                        "horizontal": {
                          "type": "string",
                          "flags": {
                            "unit": "cssValue",
                            "description": "horizontal cell padding, in 'compact' mode"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                "options": {
                                  "name": "css value"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "10px",
                            "inherit"
                          ]
                        },
                        "vertical": {
                          "type": "string",
                          "flags": {
                            "unit": "cssValue",
                            "description": "vertical cell padding, in 'compact' mode"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                                "options": {
                                  "name": "css value"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "10px",
                            "inherit"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            },
            "border": {
              "type": "object",
              "keys": {
                "bottom": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "left": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "right": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "top": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "stripes": {
              "type": "object",
              "keys": {
                "odd": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor",
                    "description": "background color of odd rows"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "even": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor",
                    "description": "background color of even rows"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                }
              }
            },
            "grid": {
              "type": "object",
              "keys": {
                "horizontal": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder",
                    "description": "the grid lines between rows",
                    "default": "1px solid rgba(0, 0, 0, 6.7%)"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "vertical": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder",
                    "description": "the grid lines between columns",
                    "default": "none"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "bars": {
              "type": "object",
              "keys": {
                "background": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor",
                    "description": "background gray in bar chart columns"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                }
              }
            },
            "truncatedNotice": {
              "type": "object",
              "flags": {
                "description": "styles for message when table is truncated in static mode"
              },
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "fontSize": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "fontWeight": {
                  "type": "any",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "bold",
                    "bolder",
                    "light",
                    "lighter",
                    "normal",
                    "initial",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                "typeface": {
                  "type": "string"
                },
                "letterSpacing": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": -99
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "lineHeight": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "textTransform": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "uppercase",
                    "capitalize",
                    "lowercase",
                    "full-width",
                    "none"
                  ]
                }
              }
            },
            "columnStyles": {
              "type": "object",
              "flags": {
                "description": "set default column styles per type"
              },
              "keys": {
                "number": {
                  "type": "object",
                  "flags": {
                    "description": "text styles for number columns"
                  },
                  "keys": {
                    "typeface": {
                      "type": "string"
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "letterSpacing": {
                      "type": "string",
                      "flags": {
                        "unit": "cssValue"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                            "options": {
                              "name": "css value"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "10px",
                        "inherit"
                      ]
                    }
                  }
                },
                "date": {
                  "type": "object",
                  "flags": {
                    "description": "text styles for date columns"
                  },
                  "keys": {
                    "typeface": {
                      "type": "string"
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "letterSpacing": {
                      "type": "string",
                      "flags": {
                        "unit": "cssValue"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                            "options": {
                              "name": "css value"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "10px",
                        "inherit"
                      ]
                    }
                  }
                },
                "text": {
                  "type": "object",
                  "flags": {
                    "description": "text styles for text columns"
                  },
                  "keys": {
                    "typeface": {
                      "type": "string"
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "letterSpacing": {
                      "type": "string",
                      "flags": {
                        "unit": "cssValue"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)$/",
                            "options": {
                              "name": "css value"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "10px",
                        "inherit"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "style": {
      "type": "object",
      "flags": {
        "description": "Generalized styles for all elements, applied to all visualisations"
      },
      "whens": [
        {
          "ref": {
            "path": [
              "version"
            ],
            "ancestor": "root"
          },
          "is": {
            "type": "any",
            "flags": {
              "only": true
            },
            "allow": [
              {
                "override": true
              },
              1
            ]
          },
          "otherwise": {
            "type": "any",
            "flags": {
              "presence": "forbidden"
            }
          }
        }
      ],
      "keys": {
        "body": {
          "type": "object",
          "keys": {
            "margin": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "padding": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "border": {
              "type": "object",
              "flags": {
                "description": "Borders around the body"
              },
              "keys": {
                "bottom": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "left": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "right": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "top": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "links": {
              "type": "object",
              "flags": {
                "description": "Special styles for links in footer"
              },
              "keys": {
                "border": {
                  "type": "object",
                  "keys": {
                    "bottom": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                },
                "padding": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                }
              }
            }
          }
        },
        "chart": {
          "type": "object",
          "keys": {
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "border": {
              "type": "object",
              "flags": {
                "description": "Borders around chart (.dw-chart-body)"
              },
              "keys": {
                "bottom": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "left": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "right": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "top": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "margin": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "padding": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            }
          }
        },
        "footer": {
          "type": "object",
          "flags": {
            "description": "Footer styles"
          },
          "keys": {
            "border": {
              "type": "object",
              "flags": {
                "description": "define borders around footer div"
              },
              "keys": {
                "bottom": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "left": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "right": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "top": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "links": {
              "type": "object",
              "flags": {
                "description": "Special styles for links in footer"
              },
              "keys": {
                "border": {
                  "type": "object",
                  "keys": {
                    "bottom": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                },
                "padding": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                }
              }
            },
            "margin": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "padding": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            }
          }
        },
        "header": {
          "type": "object",
          "flags": {
            "description": "header styles"
          },
          "keys": {
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "border": {
              "type": "object",
              "flags": {
                "description": "define borders around header div"
              },
              "keys": {
                "bottom": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "left": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "right": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "top": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "description": {
              "type": "object",
              "flags": {
                "description": "styles for chart intro/description"
              },
              "keys": {
                "border": {
                  "type": "object",
                  "flags": {
                    "description": "Borders around description"
                  },
                  "keys": {
                    "bottom": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "left": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "right": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "top": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                },
                "margin": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                },
                "padding": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                },
                "textAlign": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "description": "text alignment of chart intro"
                  },
                  "allow": [
                    "left",
                    "right",
                    "center",
                    "justify",
                    "start",
                    "end"
                  ]
                },
                "background": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor",
                    "description": "background color for description"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                }
              }
            },
            "margin": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "padding": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "textAlign": {
              "type": "string",
              "flags": {
                "only": true,
                "description": "text alignment of header"
              },
              "allow": [
                "left",
                "right",
                "center",
                "justify",
                "start",
                "end"
              ]
            },
            "title": {
              "type": "object",
              "keys": {
                "border": {
                  "type": "object",
                  "flags": {
                    "description": "borders around chart title"
                  },
                  "keys": {
                    "bottom": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "left": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "right": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "top": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                },
                "margin": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                },
                "padding": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                },
                "textAlign": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "description": "text alignment of title"
                  },
                  "allow": [
                    "left",
                    "right",
                    "center",
                    "justify",
                    "start",
                    "end"
                  ]
                },
                "background": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor",
                    "description": "background color for title"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                }
              }
            }
          }
        },
        "aboveFooter": {
          "type": "object",
          "flags": {
            "description": "Styles for above-footer region"
          },
          "keys": {
            "border": {
              "type": "object",
              "keys": {
                "bottom": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "left": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "right": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "top": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "margin": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "padding": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "textAlign": {
              "type": "string",
              "flags": {
                "only": true,
                "description": "text alignment of text"
              },
              "allow": [
                "left",
                "right",
                "center",
                "justify",
                "start",
                "end"
              ]
            }
          }
        },
        "belowFooter": {
          "type": "object",
          "flags": {
            "description": "Styles for below-footer region"
          },
          "keys": {
            "border": {
              "type": "object",
              "keys": {
                "bottom": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "left": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "right": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "top": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                }
              }
            },
            "margin": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "padding": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "background": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "textAlign": {
              "type": "string",
              "flags": {
                "only": true,
                "description": "text alignment of text"
              },
              "allow": [
                "left",
                "right",
                "center",
                "justify",
                "start",
                "end"
              ]
            }
          }
        },
        "notes": {
          "type": "object",
          "flags": {
            "description": "Styles for chart notes"
          },
          "keys": {
            "margin": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "padding": {
              "type": "string",
              "flags": {
                "unit": "cssMargin"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                    "options": {
                      "name": "css margin"
                    }
                  }
                }
              ],
              "examples": [
                "5px 10px",
                "10px auto 5px"
              ]
            },
            "textAlign": {
              "type": "string",
              "flags": {
                "only": true,
                "description": "text alignment of text"
              },
              "allow": [
                "left",
                "right",
                "center",
                "justify",
                "start",
                "end"
              ]
            }
          }
        },
        "filter": {
          "type": "object",
          "flags": {
            "description": "Styles for data column switcher (column charts, election donut)"
          },
          "keys": {
            "tabs": {
              "type": "object",
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "allow": [
                    "currentColor"
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "fontSize": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "font size in pixel"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "fontStretch": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "ultra-condensed",
                    "extra-condensed",
                    "condensed",
                    "semi-condensed",
                    "normal",
                    "semi-expanded",
                    "expanded",
                    "extra-expanded",
                    "ultra-expanded",
                    "50%",
                    "62.5%",
                    "75%",
                    "87.5%",
                    "100%",
                    "112.5%",
                    "125%",
                    "150%",
                    "200%"
                  ]
                },
                "fontWeight": {
                  "type": "any",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "bold",
                    "bolder",
                    "light",
                    "lighter",
                    "normal",
                    "initial",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                "letterSpacing": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": -99
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "lineHeight": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "textTransform": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "uppercase",
                    "capitalize",
                    "lowercase",
                    "full-width",
                    "none"
                  ]
                },
                "typeface": {
                  "type": "string",
                  "flags": {
                    "description": "font family"
                  }
                },
                "active": {
                  "type": "object",
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    },
                    "border": {
                      "type": "object",
                      "keys": {
                        "bottom": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        },
                        "left": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        },
                        "right": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        },
                        "top": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        }
                      }
                    }
                  }
                },
                "hover": {
                  "type": "object",
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "fontWeight": {
                      "type": "any",
                      "flags": {
                        "only": true
                      },
                      "allow": [
                        "bold",
                        "bolder",
                        "light",
                        "lighter",
                        "normal",
                        "initial",
                        100,
                        200,
                        300,
                        400,
                        500,
                        600,
                        700,
                        800,
                        900
                      ]
                    }
                  }
                },
                "border": {
                  "type": "object",
                  "keys": {
                    "bottom": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "left": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "right": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "top": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    }
                  }
                },
                "height": {
                  "type": "number",
                  "flags": {
                    "unit": "px"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                }
              }
            },
            "select": {
              "type": "object",
              "keys": {
                "border": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "borderRadius": {
                  "type": "string"
                },
                "padding": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                },
                "fontSize": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "font size in pixel"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "textColor": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                }
              }
            },
            "point": {
              "type": "object",
              "keys": {
                "buttons": {
                  "type": "object",
                  "keys": {
                    "background": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "border": {
                      "type": "string",
                      "flags": {
                        "unit": "cssBorder"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                            "options": {
                              "name": "css border"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "1px dashed #cc3399"
                      ]
                    },
                    "fontSize": {
                      "type": "number",
                      "flags": {
                        "unit": "px"
                      },
                      "rules": [
                        {
                          "name": "min",
                          "args": {
                            "limit": 0
                          }
                        },
                        {
                          "name": "max",
                          "args": {
                            "limit": 100
                          }
                        }
                      ],
                      "preferences": {
                        "convert": false
                      }
                    },
                    "labelColor": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor",
                        "description": "Color of text"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    },
                    "active": {
                      "type": "object",
                      "keys": {
                        "background": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "border": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        }
                      }
                    },
                    "hover": {
                      "type": "object",
                      "keys": {
                        "background": {
                          "type": "string",
                          "flags": {
                            "unit": "cssColor"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                "options": {
                                  "name": "css color"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "#cc0044",
                            "rgba(200,10,45,0.6)"
                          ]
                        },
                        "border": {
                          "type": "string",
                          "flags": {
                            "unit": "cssBorder"
                          },
                          "rules": [
                            {
                              "name": "pattern",
                              "args": {
                                "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                                "options": {
                                  "name": "css border"
                                }
                              }
                            }
                          ],
                          "examples": [
                            "1px dashed #cc3399"
                          ]
                        }
                      }
                    }
                  }
                },
                "line": {
                  "type": "object",
                  "keys": {
                    "color": {
                      "type": "string",
                      "flags": {
                        "unit": "cssColor"
                      },
                      "rules": [
                        {
                          "name": "pattern",
                          "args": {
                            "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                            "options": {
                              "name": "css color"
                            }
                          }
                        }
                      ],
                      "examples": [
                        "#cc0044",
                        "rgba(200,10,45,0.6)"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "typography": {
      "type": "object",
      "flags": {
        "description": "font definitions"
      },
      "whens": [
        {
          "ref": {
            "path": [
              "version"
            ],
            "ancestor": "root"
          },
          "is": {
            "type": "any",
            "flags": {
              "only": true
            },
            "allow": [
              {
                "override": true
              },
              1
            ]
          },
          "otherwise": {
            "type": "any",
            "flags": {
              "presence": "forbidden"
            }
          }
        }
      ],
      "keys": {
        "chart": {
          "type": "object",
          "flags": {
            "description": "general font used in the chart"
          },
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "letterSpacing": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": -99
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textTransform": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "uppercase",
                "capitalize",
                "lowercase",
                "full-width",
                "none"
              ]
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "tabularNums": {
              "type": "boolean",
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "description": {
          "type": "object",
          "flags": {
            "description": "description font"
          },
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "cursive": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "letterSpacing": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": -99
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "lineHeight": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textTransform": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "uppercase",
                "capitalize",
                "lowercase",
                "full-width",
                "none"
              ]
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "underlined": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "aboveFooter": {
          "type": "object",
          "flags": {
            "description": "font used in chart footer"
          },
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "cursive": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "letterSpacing": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": -99
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "lineHeight": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textTransform": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "uppercase",
                "capitalize",
                "lowercase",
                "full-width",
                "none"
              ]
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "underlined": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "belowFooter": {
          "type": "object",
          "flags": {
            "description": "font used in chart footer"
          },
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "cursive": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "letterSpacing": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": -99
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "lineHeight": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textTransform": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "uppercase",
                "capitalize",
                "lowercase",
                "full-width",
                "none"
              ]
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "underlined": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "footer": {
          "type": "object",
          "flags": {
            "description": "font used in chart footer"
          },
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "cursive": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "letterSpacing": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": -99
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "lineHeight": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textTransform": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "uppercase",
                "capitalize",
                "lowercase",
                "full-width",
                "none"
              ]
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "underlined": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "headline": {
          "type": "object",
          "flags": {
            "description": "headline font"
          },
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "cursive": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "letterSpacing": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": -99
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "lineHeight": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textTransform": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "uppercase",
                "capitalize",
                "lowercase",
                "full-width",
                "none"
              ]
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "underlined": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "links": {
          "type": "object",
          "flags": {
            "description": "font used in links in footer and notes"
          },
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "cursive": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "lineHeight": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "underlined": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "hoverColor": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            }
          }
        },
        "notes": {
          "type": "object",
          "flags": {
            "description": "font used in chart notes"
          },
          "keys": {
            "color": {
              "type": "string",
              "flags": {
                "unit": "cssColor"
              },
              "rules": [
                {
                  "name": "pattern",
                  "args": {
                    "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                    "options": {
                      "name": "css color"
                    }
                  }
                }
              ],
              "allow": [
                "currentColor"
              ],
              "examples": [
                "#cc0044",
                "rgba(200,10,45,0.6)"
              ]
            },
            "cursive": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "fontSize": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "font size in pixel"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "fontStretch": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "ultra-condensed",
                "extra-condensed",
                "condensed",
                "semi-condensed",
                "normal",
                "semi-expanded",
                "expanded",
                "extra-expanded",
                "ultra-expanded",
                "50%",
                "62.5%",
                "75%",
                "87.5%",
                "100%",
                "112.5%",
                "125%",
                "150%",
                "200%"
              ]
            },
            "fontWeight": {
              "type": "any",
              "flags": {
                "only": true
              },
              "allow": [
                "bold",
                "bolder",
                "light",
                "lighter",
                "normal",
                "initial",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            "letterSpacing": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": -99
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "lineHeight": {
              "type": "number",
              "flags": {
                "unit": "px"
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 1
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 99
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "textTransform": {
              "type": "string",
              "flags": {
                "only": true
              },
              "allow": [
                "uppercase",
                "capitalize",
                "lowercase",
                "full-width",
                "none"
              ]
            },
            "typeface": {
              "type": "string",
              "flags": {
                "description": "font family"
              }
            },
            "underlined": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "fontFamilies": {
          "type": "object",
          "flags": {
            "description": "define font families"
          },
          "patterns": [
            {
              "regex": "/./",
              "rule": {
                "type": "array",
                "items": [
                  {
                    "type": "object",
                    "keys": {
                      "printOnly": {
                        "type": "boolean",
                        "preferences": {
                          "convert": false
                        }
                      },
                      "name": {
                        "type": "string",
                        "flags": {
                          "description": "Name of uploaded font",
                          "presence": "required"
                        }
                      },
                      "weight": {
                        "type": "any",
                        "flags": {
                          "only": true,
                          "description": "Font weight",
                          "presence": "required"
                        },
                        "allow": [
                          "bold",
                          "bolder",
                          "light",
                          "lighter",
                          "normal",
                          "initial",
                          100,
                          200,
                          300,
                          400,
                          500,
                          600,
                          700,
                          800,
                          900
                        ]
                      },
                      "style": {
                        "type": "string",
                        "flags": {
                          "default": "normal",
                          "presence": "required"
                        },
                        "allow": [
                          "italic",
                          "oblique",
                          "normal"
                        ]
                      },
                      "stretch": {
                        "type": "string",
                        "flags": {
                          "only": true
                        },
                        "allow": [
                          "ultra-condensed",
                          "extra-condensed",
                          "condensed",
                          "semi-condensed",
                          "normal",
                          "semi-expanded",
                          "expanded",
                          "extra-expanded",
                          "ultra-expanded",
                          "50%",
                          "62.5%",
                          "75%",
                          "87.5%",
                          "100%",
                          "112.5%",
                          "125%",
                          "150%",
                          "200%"
                        ]
                      },
                      "display": {
                        "type": "string",
                        "allow": [
                          "auto",
                          "block",
                          "swap",
                          "fallback",
                          "optional"
                        ]
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "options": {
      "type": "object",
      "flags": {
        "description": "general options"
      },
      "keys": {
        "blocks": {
          "type": "object",
          "flags": {
            "description": "For customizing chart blocks position, order, etc."
          },
          "shared": [
            {
              "type": "object",
              "flags": {
                "id": "block-v1"
              },
              "keys": {
                "region": {
                  "type": "string",
                  "flags": {
                    "description": "the chart region where this block is rendered",
                    "only": true
                  },
                  "allow": [
                    "aboveFooter",
                    "belowFooter",
                    "plainFooter",
                    "header",
                    "belowHeader",
                    "headerRight",
                    "afterBody",
                    "footerLeft",
                    "footerCenter",
                    "footerRight",
                    "menu"
                  ]
                },
                "priority": {
                  "type": "number",
                  "flags": {
                    "description": "blocks are sorted by priority in each region"
                  }
                },
                "prepend": {
                  "type": "string",
                  "flags": {
                    "description": "prepend custom HTML"
                  }
                },
                "append": {
                  "type": "string",
                  "flags": {
                    "description": "append custom HTML"
                  }
                }
              }
            },
            {
              "type": "object",
              "flags": {
                "id": "hrdata"
              },
              "keys": {
                "border": {
                  "type": "string",
                  "flags": {
                    "unit": "cssBorder"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^none|(\\d+\\.)?\\d+(:?px|pt) (?:solid|dashed|dotted|double) (?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))?$/",
                        "options": {
                          "name": "css border"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "1px dashed #cc3399"
                  ]
                },
                "margin": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                }
              }
            },
            {
              "type": "object",
              "flags": {
                "id": "svgRuleData"
              },
              "keys": {
                "strokeDasharray": {
                  "type": "string"
                },
                "strokeLinecap": {
                  "type": "string",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "butt",
                    "round",
                    "square"
                  ]
                },
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "width": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "stroke width"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "margin": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                }
              }
            }
          ],
          "whens": [
            {
              "ref": {
                "path": [
                  "version"
                ],
                "ancestor": "root"
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true
                },
                "allow": [
                  {
                    "override": true
                  },
                  1
                ]
              },
              "otherwise": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ],
          "keys": {
            "headline": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "description": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "social-sharing": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "notes": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "byline": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "chartCaption": {
                            "type": "string",
                            "allow": [
                              ""
                            ]
                          },
                          "mapCaption": {
                            "type": "string",
                            "allow": [
                              ""
                            ]
                          },
                          "tableCaption": {
                            "type": "string",
                            "allow": [
                              ""
                            ]
                          },
                          "forkCaption": {
                            "type": "string",
                            "allow": [
                              ""
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "source": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "caption": {
                            "type": "string",
                            "allow": [
                              ""
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "embed": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "caption": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string",
                            "flags": {
                              "description": "the explainer text that is shown inside the embed popup"
                            },
                            "allow": [
                              ""
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "get-the-data": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "caption": {
                            "type": "string"
                          },
                          "filename": {
                            "type": "string",
                            "allow": [
                              ""
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "map-attribution": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "caption": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "edit": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "caption": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "download-image": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "caption": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "download-svg": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "caption": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "download-pdf": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "caption": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "attribution": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "logo": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "metas": [
                          {
                            "overrideSupport": [
                              "darkMode"
                            ]
                          }
                        ],
                        "keys": {
                          "options": {
                            "type": "array",
                            "metas": [
                              {
                                "overrideSupport": [
                                  "darkMode"
                                ]
                              }
                            ],
                            "items": [
                              {
                                "type": "object",
                                "keys": {
                                  "id": {
                                    "type": "string",
                                    "flags": {
                                      "description": "logo id",
                                      "presence": "required"
                                    },
                                    "rules": [
                                      {
                                        "name": "pattern",
                                        "args": {
                                          "regex": "/^[a-zA-Z0-9-]+$/"
                                        }
                                      }
                                    ]
                                  },
                                  "title": {
                                    "type": "string",
                                    "flags": {
                                      "description": "name of logo as it will appear in the UI",
                                      "presence": "required"
                                    }
                                  },
                                  "imgSrc": {
                                    "type": "string",
                                    "flags": {
                                      "description": "image source url"
                                    },
                                    "metas": [
                                      {
                                        "overrideSupport": [
                                          "darkMode"
                                        ]
                                      }
                                    ]
                                  },
                                  "height": {
                                    "type": "number",
                                    "flags": {
                                      "description": "height of logo"
                                    },
                                    "whens": [
                                      {
                                        "ref": {
                                          "path": [
                                            "imgSrc"
                                          ]
                                        },
                                        "is": {
                                          "type": "any",
                                          "flags": {
                                            "presence": "required"
                                          }
                                        },
                                        "then": {
                                          "type": "any",
                                          "flags": {
                                            "presence": "required"
                                          }
                                        }
                                      }
                                    ]
                                  },
                                  "text": {
                                    "type": "string",
                                    "flags": {
                                      "description": "for a text only logo"
                                    }
                                  },
                                  "url": {
                                    "type": "string",
                                    "flags": {
                                      "description": "if configured, logo will link to this url"
                                    }
                                  },
                                  "linkTitle": {
                                    "type": "string",
                                    "flags": {
                                      "description": "title attribute for <a> tag, if data.url is configured"
                                    }
                                  },
                                  "altText": {
                                    "type": "string",
                                    "allow": [
                                      ""
                                    ],
                                    "whens": [
                                      {
                                        "ref": {
                                          "path": [
                                            "imgSrc"
                                          ]
                                        },
                                        "is": {
                                          "type": "any",
                                          "flags": {
                                            "presence": "required"
                                          }
                                        },
                                        "otherwise": {
                                          "type": "any",
                                          "flags": {
                                            "presence": "forbidden"
                                          }
                                        }
                                      }
                                    ]
                                  }
                                }
                              }
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "rectangle": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "width": {
                            "type": "number"
                          },
                          "height": {
                            "type": "number"
                          },
                          "background": {
                            "type": "string",
                            "flags": {
                              "unit": "cssColor"
                            },
                            "rules": [
                              {
                                "name": "pattern",
                                "args": {
                                  "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                                  "options": {
                                    "name": "css color"
                                  }
                                }
                              }
                            ],
                            "examples": [
                              "#cc0044",
                              "rgba(200,10,45,0.6)"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "watermark": {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "hr": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "link",
                        "link": {
                          "ref": {
                            "path": [
                              "hrdata"
                            ],
                            "type": "local"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "hr1": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "link",
                        "link": {
                          "ref": {
                            "path": [
                              "hrdata"
                            ],
                            "type": "local"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "hr2": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "link",
                        "link": {
                          "ref": {
                            "path": [
                              "hrdata"
                            ],
                            "type": "local"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "svg-rule": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "link",
                        "link": {
                          "ref": {
                            "path": [
                              "svgRuleData"
                            ],
                            "type": "local"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "svg-rule1": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "link",
                        "link": {
                          "ref": {
                            "path": [
                              "svgRuleData"
                            ],
                            "type": "local"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "svg-rule2": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "link",
                        "link": {
                          "ref": {
                            "path": [
                              "svgRuleData"
                            ],
                            "type": "local"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "figure": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "subhed": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "caption": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "timestamp": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "copyright": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "custom": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string",
                            "flags": {
                              "description": "static text to show when this field is true"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "custom1": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string",
                            "flags": {
                              "description": "static text to show when this field is true"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "custom2": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string",
                            "flags": {
                              "description": "static text to show when this field is true"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            },
            "custom3": {
              "type": "link",
              "whens": [
                {
                  "concat": {
                    "type": "object",
                    "keys": {
                      "data": {
                        "type": "object",
                        "keys": {
                          "custom-field": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string",
                            "flags": {
                              "description": "static text to show when this field is true"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              ],
              "link": {
                "ref": {
                  "path": [
                    "block-v1"
                  ],
                  "type": "local"
                }
              }
            }
          }
        },
        "darkMode": {
          "type": "object",
          "keys": {
            "auto": {
              "type": "boolean",
              "flags": {
                "description": "if \"user\" then this can be set on a per-chart level"
              },
              "preferences": {
                "convert": false
              },
              "allow": [
                "user"
              ]
            },
            "preview": {
              "type": "boolean",
              "flags": {
                "description": "set to true to display dark mode preview in editor"
              },
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "header": {
          "type": "object",
          "whens": [
            {
              "ref": {
                "path": [
                  "version"
                ],
                "ancestor": "root"
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true
                },
                "allow": [
                  {
                    "override": true
                  },
                  1
                ]
              },
              "otherwise": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ],
          "keys": {
            "gap": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "gap between header regions, in case headerRight is being used"
              },
              "rules": [
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                },
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            }
          }
        },
        "footer": {
          "type": "object",
          "flags": {
            "description": "footer options"
          },
          "whens": [
            {
              "ref": {
                "path": [
                  "version"
                ],
                "ancestor": "root"
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true
                },
                "allow": [
                  {
                    "override": true
                  },
                  1
                ]
              },
              "otherwise": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ],
          "keys": {
            "createdWithDatawrapper": {
              "type": "boolean",
              "flags": {
                "default": false
              },
              "preferences": {
                "convert": false
              }
            },
            "separator": {
              "type": "object",
              "keys": {
                "text": {
                  "type": "string",
                  "flags": {
                    "description": "for customizing the \"•\" separator between footer blocks. make sure to wrap the separator in single quotes and prepend an encoded whitespace, e.g. '\\00a0•'"
                  }
                },
                "margin": {
                  "type": "string",
                  "flags": {
                    "unit": "cssMargin",
                    "description": "for controlling the margin on the separator element"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)(?: (?:inherit|auto|initial|unset|0|-?\\d+(?:\\.\\d+)?(?:%|px|cm|mm|in|pc|pt|ex|rem|em|cap|ch|vh|vw|vmin|vmax)?)){0,3}$/",
                        "options": {
                          "name": "css margin"
                        }
                      }
                    }
                  ],
                  "examples": [
                    "5px 10px",
                    "10px auto 5px"
                  ]
                }
              }
            },
            "alignItems": {
              "type": "string",
              "flags": {
                "only": true,
                "description": "vertical alignment of the 3 footer regions",
                "default": "center"
              },
              "allow": [
                "baseline",
                "center",
                "end",
                "flex-end",
                "flex-start",
                "inherit",
                "initial",
                "normal",
                "first baseline",
                "last baseline"
              ]
            },
            "gap": {
              "type": "number",
              "flags": {
                "unit": "px",
                "description": "gap between footer regions"
              },
              "rules": [
                {
                  "name": "max",
                  "args": {
                    "limit": 100
                  }
                },
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                }
              ],
              "preferences": {
                "convert": false
              }
            },
            "left": {
              "type": "object",
              "keys": {
                "layout": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "default": "inline"
                  },
                  "allow": [
                    "inline",
                    "flex-row",
                    "flex-column"
                  ]
                },
                "gap": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "gap between footer items, only available with layout set to flex-row or flex-column"
                  },
                  "rules": [
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    },
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  },
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "layout"
                        ]
                      },
                      "is": {
                        "type": "any",
                        "flags": {
                          "only": true,
                          "presence": "required"
                        },
                        "allow": [
                          {
                            "override": true
                          },
                          "inline"
                        ]
                      },
                      "then": {
                        "type": "any",
                        "flags": {
                          "presence": "forbidden"
                        }
                      }
                    }
                  ]
                },
                "alignItems": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "description": "vertical alignment of items inside this footer region, only available when layout is set to flex-row"
                  },
                  "allow": [
                    "baseline",
                    "center",
                    "end",
                    "flex-end",
                    "flex-start",
                    "inherit",
                    "initial",
                    "normal",
                    "first baseline",
                    "last baseline"
                  ],
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "layout"
                        ]
                      },
                      "is": {
                        "type": "any",
                        "flags": {
                          "only": true,
                          "presence": "required"
                        },
                        "allow": [
                          {
                            "override": true
                          },
                          "flex-row"
                        ]
                      },
                      "otherwise": {
                        "type": "any",
                        "flags": {
                          "presence": "forbidden"
                        }
                      }
                    }
                  ]
                }
              }
            },
            "center": {
              "type": "object",
              "keys": {
                "layout": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "default": "inline"
                  },
                  "allow": [
                    "inline",
                    "flex-row",
                    "flex-column"
                  ]
                },
                "gap": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "gap between footer items, only available with layout set to flex-row or flex-column"
                  },
                  "rules": [
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    },
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  },
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "layout"
                        ]
                      },
                      "is": {
                        "type": "any",
                        "flags": {
                          "only": true,
                          "presence": "required"
                        },
                        "allow": [
                          {
                            "override": true
                          },
                          "inline"
                        ]
                      },
                      "then": {
                        "type": "any",
                        "flags": {
                          "presence": "forbidden"
                        }
                      }
                    }
                  ]
                },
                "alignItems": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "description": "vertical alignment of items inside this footer region, only available when layout is set to flex-row"
                  },
                  "allow": [
                    "baseline",
                    "center",
                    "end",
                    "flex-end",
                    "flex-start",
                    "inherit",
                    "initial",
                    "normal",
                    "first baseline",
                    "last baseline"
                  ],
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "layout"
                        ]
                      },
                      "is": {
                        "type": "any",
                        "flags": {
                          "only": true,
                          "presence": "required"
                        },
                        "allow": [
                          {
                            "override": true
                          },
                          "flex-row"
                        ]
                      },
                      "otherwise": {
                        "type": "any",
                        "flags": {
                          "presence": "forbidden"
                        }
                      }
                    }
                  ]
                }
              }
            },
            "right": {
              "type": "object",
              "keys": {
                "layout": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "default": "inline"
                  },
                  "allow": [
                    "inline",
                    "flex-row",
                    "flex-column"
                  ]
                },
                "gap": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "gap between footer items, only available with layout set to flex-row or flex-column"
                  },
                  "rules": [
                    {
                      "name": "max",
                      "args": {
                        "limit": 100
                      }
                    },
                    {
                      "name": "min",
                      "args": {
                        "limit": 0
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  },
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "layout"
                        ]
                      },
                      "is": {
                        "type": "any",
                        "flags": {
                          "only": true,
                          "presence": "required"
                        },
                        "allow": [
                          {
                            "override": true
                          },
                          "inline"
                        ]
                      },
                      "then": {
                        "type": "any",
                        "flags": {
                          "presence": "forbidden"
                        }
                      }
                    }
                  ]
                },
                "alignItems": {
                  "type": "string",
                  "flags": {
                    "only": true,
                    "description": "vertical alignment of items inside this footer region, only available when layout is set to flex-row"
                  },
                  "allow": [
                    "baseline",
                    "center",
                    "end",
                    "flex-end",
                    "flex-start",
                    "inherit",
                    "initial",
                    "normal",
                    "first baseline",
                    "last baseline"
                  ],
                  "whens": [
                    {
                      "ref": {
                        "path": [
                          "layout"
                        ]
                      },
                      "is": {
                        "type": "any",
                        "flags": {
                          "only": true,
                          "presence": "required"
                        },
                        "allow": [
                          {
                            "override": true
                          },
                          "flex-row"
                        ]
                      },
                      "otherwise": {
                        "type": "any",
                        "flags": {
                          "presence": "forbidden"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "menu": {
          "type": "object",
          "whens": [
            {
              "ref": {
                "path": [
                  "version"
                ],
                "ancestor": "root"
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true
                },
                "allow": [
                  {
                    "override": true
                  },
                  1
                ]
              },
              "otherwise": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ],
          "keys": {
            "icon": {
              "type": "string",
              "flags": {
                "description": "HTML icon"
              },
              "examples": [
                "<svg width=\"24\" height=\"24\"><path d=\"...\"></path></svg>"
              ]
            }
          }
        },
        "watermark": {
          "type": "object",
          "flags": {
            "description": "Optional watermark overlay for charts"
          },
          "whens": [
            {
              "ref": {
                "path": [
                  "version"
                ],
                "ancestor": "root"
              },
              "is": {
                "type": "any",
                "flags": {
                  "only": true
                },
                "allow": [
                  {
                    "override": true
                  },
                  1
                ]
              },
              "otherwise": {
                "type": "any",
                "flags": {
                  "presence": "forbidden"
                }
              }
            }
          ],
          "keys": {
            "text": {
              "type": "string",
              "flags": {
                "description": "The watermark's copy text"
              }
            },
            "custom-field": {
              "type": "string"
            },
            "rotate": {
              "type": "boolean",
              "flags": {
                "default": true
              },
              "preferences": {
                "convert": false
              }
            },
            "opacity": {
              "type": "number",
              "flags": {
                "unit": "0..1",
                "default": 0.182
              },
              "rules": [
                {
                  "name": "min",
                  "args": {
                    "limit": 0
                  }
                },
                {
                  "name": "max",
                  "args": {
                    "limit": 1
                  }
                }
              ]
            },
            "typography": {
              "type": "object",
              "keys": {
                "color": {
                  "type": "string",
                  "flags": {
                    "unit": "cssColor"
                  },
                  "rules": [
                    {
                      "name": "pattern",
                      "args": {
                        "regex": "/^(?:transparent|black|white|#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8})|rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)|rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)|rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)|hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)|hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\))$/",
                        "options": {
                          "name": "css color"
                        }
                      }
                    }
                  ],
                  "allow": [
                    "currentColor"
                  ],
                  "examples": [
                    "#cc0044",
                    "rgba(200,10,45,0.6)"
                  ]
                },
                "fontSize": {
                  "type": "number",
                  "flags": {
                    "unit": "px",
                    "description": "font size in pixel"
                  },
                  "rules": [
                    {
                      "name": "min",
                      "args": {
                        "limit": 1
                      }
                    },
                    {
                      "name": "max",
                      "args": {
                        "limit": 99
                      }
                    }
                  ],
                  "preferences": {
                    "convert": false
                  }
                },
                "fontWeight": {
                  "type": "any",
                  "flags": {
                    "only": true
                  },
                  "allow": [
                    "bold",
                    "bolder",
                    "light",
                    "lighter",
                    "normal",
                    "initial",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                "typeface": {
                  "type": "string",
                  "flags": {
                    "description": "font family"
                  }
                }
              }
            }
          }
        }
      }
    },
    "locales": {
      "type": "object",
      "flags": {
        "description": "Custom locales for in-chart translations such as \"Source\". Useful for customers who need custom captions in different languages"
      },
      "patterns": [
        {
          "schema": {
            "type": "string",
            "flags": {
              "unit": "locale",
              "description": "locale"
            },
            "rules": [
              {
                "name": "pattern",
                "args": {
                  "regex": "/[a-z]{2}(?:-[A-Z]{2})?$/"
                }
              }
            ],
            "examples": [
              "\"de-CH\"",
              "\"en\""
            ]
          },
          "rule": {
            "type": "object",
            "patterns": [
              {
                "schema": {
                  "type": "string",
                  "flags": {
                    "description": "translation key",
                    "unit": "key"
                  },
                  "examples": [
                    "\"embed / caption\""
                  ]
                },
                "rule": {
                  "type": "string",
                  "flags": {
                    "description": "translated text"
                  }
                }
              }
            ]
          }
        }
      ]
    },
    "blocks": {
      "type": "object",
      "flags": {
        "description": "styles for containers and blocks (v2)"
      },
      "whens": [
        {
          "ref": {
            "path": [
              "version"
            ],
            "ancestor": "root"
          },
          "is": {
            "type": "any",
            "flags": {
              "only": true
            },
            "allow": [
              {
                "override": true
              },
              2
            ]
          },
          "otherwise": {
            "type": "any",
            "flags": {
              "presence": "forbidden"
            }
          }
        }
      ],
      "patterns": [
        {
          "regex": "/^[a-zA-Z0-9-]+$/",
          "rule": {
            "type": "object",
            "keys": {
              "styles": {
                "type": "alternatives",
                "matches": [
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "bylineStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "containerStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "descriptionStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "downloadImageStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "downloadPDFStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "downloadSVGStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "filterUIStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "getTheDataStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "headlineStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "imageStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "logoStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "mapAttributionStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "menuStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "notesStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "rectangleStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "ruleHTMLStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "ruleSVGStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "shareToolsStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "textStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "sourceStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "textBlockStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "watermarkStyles"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  }
                ]
              },
              "options": {
                "type": "alternatives",
                "matches": [
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "blockOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "bylineOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "textOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "downloadImageOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "downloadPDFOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "downloadSVGOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "embedOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "getTheDataOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "headlineOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "imageOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "logoOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "mapAttributionOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "menuOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "notesOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "shareToolsOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "sourceOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "textBlockOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  },
                  {
                    "schema": {
                      "type": "link",
                      "link": {
                        "ref": {
                          "path": [
                            "watermarkOptions"
                          ],
                          "ancestor": "root"
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    },
    "regions": {
      "type": "object",
      "flags": {
        "description": "region definitions (v2)"
      },
      "shared": [
        {
          "type": "object",
          "flags": {
            "id": "container"
          },
          "metas": [
            {
              "version": 2
            }
          ],
          "keys": {
            "id": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "flags": {
                "only": true,
                "presence": "required"
              },
              "allow": [
                "container",
                "menu"
              ]
            },
            "children": {
              "type": "array",
              "items": [
                {
                  "type": "alternatives",
                  "matches": [
                    {
                      "schema": {
                        "type": "link",
                        "link": {
                          "ref": {
                            "path": [
                              "container"
                            ],
                            "type": "local"
                          }
                        }
                      }
                    },
                    {
                      "schema": {
                        "type": "link",
                        "link": {
                          "ref": {
                            "path": [
                              "block"
                            ],
                            "type": "local"
                          }
                        }
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "type": "object",
          "flags": {
            "id": "block"
          },
          "metas": [
            {
              "version": 2
            }
          ],
          "keys": {
            "type": {
              "type": "string",
              "flags": {
                "only": true,
                "presence": "required"
              },
              "allow": [
                "attribution",
                "byline",
                "description",
                "downloadImage",
                "downloadPDF",
                "downloadSVG",
                "edit",
                "embed",
                "filterUI",
                "getTheData",
                "headline",
                "image",
                "logo",
                "mapAttribution",
                "notes",
                "rectangle",
                "ruleHTML",
                "ruleSVG",
                "shareTools",
                "source",
                "text",
                "watermark"
              ],
              "invalid": [
                "container",
                "menu"
              ]
            },
            "id": {
              "type": "string"
            }
          }
        }
      ],
      "whens": [
        {
          "ref": {
            "path": [
              "version"
            ],
            "ancestor": "root"
          },
          "is": {
            "type": "any",
            "flags": {
              "only": true
            },
            "allow": [
              {
                "override": true
              },
              2
            ]
          },
          "otherwise": {
            "type": "any",
            "flags": {
              "presence": "forbidden"
            }
          }
        }
      ],
      "keys": {
        "header": {
          "type": "alternatives",
          "matches": [
            {
              "schema": {
                "type": "link",
                "link": {
                  "ref": {
                    "path": [
                      "container"
                    ],
                    "type": "local"
                  }
                }
              }
            },
            {
              "schema": {
                "type": "link",
                "link": {
                  "ref": {
                    "path": [
                      "block"
                    ],
                    "type": "local"
                  }
                }
              }
            }
          ]
        },
        "bodyLeft": {
          "type": "alternatives",
          "matches": [
            {
              "schema": {
                "type": "link",
                "link": {
                  "ref": {
                    "path": [
                      "container"
                    ],
                    "type": "local"
                  }
                }
              }
            },
            {
              "schema": {
                "type": "link",
                "link": {
                  "ref": {
                    "path": [
                      "block"
                    ],
                    "type": "local"
                  }
                }
              }
            }
          ]
        },
        "bodyRight": {
          "type": "alternatives",
          "matches": [
            {
              "schema": {
                "type": "link",
                "link": {
                  "ref": {
                    "path": [
                      "container"
                    ],
                    "type": "local"
                  }
                }
              }
            },
            {
              "schema": {
                "type": "link",
                "link": {
                  "ref": {
                    "path": [
                      "block"
                    ],
                    "type": "local"
                  }
                }
              }
            }
          ]
        },
        "footer": {
          "type": "alternatives",
          "matches": [
            {
              "schema": {
                "type": "link",
                "link": {
                  "ref": {
                    "path": [
                      "container"
                    ],
                    "type": "local"
                  }
                }
              }
            },
            {
              "schema": {
                "type": "link",
                "link": {
                  "ref": {
                    "path": [
                      "block"
                    ],
                    "type": "local"
                  }
                }
              }
            }
          ]
        },
        "afterChart": {
          "type": "array",
          "items": [
            {
              "type": "link",
              "link": {
                "ref": {
                  "path": [
                    "block"
                  ],
                  "type": "local"
                }
              }
            }
          ]
        }
      }
    },
    "defaultHeaderRegion": {
      "type": "string",
      "flags": {
        "description": "the default regions to place header blocks into",
        "default": "header"
      },
      "whens": [
        {
          "ref": {
            "path": [
              "version"
            ],
            "ancestor": "root"
          },
          "is": {
            "type": "any",
            "flags": {
              "only": true
            },
            "allow": [
              {
                "override": true
              },
              2
            ]
          },
          "otherwise": {
            "type": "any",
            "flags": {
              "presence": "forbidden"
            }
          }
        }
      ]
    },
    "defaultFooterRegion": {
      "type": "string",
      "flags": {
        "description": "the default regions to place footer blocks into",
        "default": "footer"
      },
      "whens": [
        {
          "ref": {
            "path": [
              "version"
            ],
            "ancestor": "root"
          },
          "is": {
            "type": "any",
            "flags": {
              "only": true
            },
            "allow": [
              {
                "override": true
              },
              2
            ]
          },
          "otherwise": {
            "type": "any",
            "flags": {
              "presence": "forbidden"
            }
          }
        }
      ]
    },
    "fontFamilies": {
      "type": "object",
      "flags": {
        "description": "font family definitions"
      },
      "whens": [
        {
          "ref": {
            "path": [
              "version"
            ],
            "ancestor": "root"
          },
          "is": {
            "type": "any",
            "flags": {
              "only": true
            },
            "allow": [
              {
                "override": true
              },
              2
            ]
          },
          "otherwise": {
            "type": "any",
            "flags": {
              "presence": "forbidden"
            }
          }
        }
      ],
      "patterns": [
        {
          "regex": "/./",
          "rule": {
            "type": "array",
            "items": [
              {
                "type": "object",
                "keys": {
                  "printOnly": {
                    "type": "boolean",
                    "preferences": {
                      "convert": false
                    }
                  },
                  "name": {
                    "type": "string",
                    "flags": {
                      "description": "Name of uploaded font",
                      "presence": "required"
                    }
                  },
                  "weight": {
                    "type": "any",
                    "flags": {
                      "only": true,
                      "description": "Font weight",
                      "presence": "required"
                    },
                    "allow": [
                      "bold",
                      "bolder",
                      "light",
                      "lighter",
                      "normal",
                      "initial",
                      100,
                      200,
                      300,
                      400,
                      500,
                      600,
                      700,
                      800,
                      900
                    ]
                  },
                  "style": {
                    "type": "string",
                    "flags": {
                      "default": "normal",
                      "presence": "required"
                    },
                    "allow": [
                      "italic",
                      "oblique",
                      "normal"
                    ]
                  },
                  "stretch": {
                    "type": "string",
                    "flags": {
                      "only": true
                    },
                    "allow": [
                      "ultra-condensed",
                      "extra-condensed",
                      "condensed",
                      "semi-condensed",
                      "normal",
                      "semi-expanded",
                      "expanded",
                      "extra-expanded",
                      "ultra-expanded",
                      "50%",
                      "62.5%",
                      "75%",
                      "87.5%",
                      "100%",
                      "112.5%",
                      "125%",
                      "150%",
                      "200%"
                    ]
                  },
                  "display": {
                    "type": "string",
                    "allow": [
                      "auto",
                      "block",
                      "swap",
                      "fallback",
                      "optional"
                    ]
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}