{ version: '3.0.6',
  style: 
   { 'filter-mode': 
      { type: [Object],
        doc: 'Control the processing behavior of Rule filters within a Style. If \'all\' is used then all Rules are processed sequentially independent of whether any previous filters matched. If \'first\' is used then it means processing ends after the first match (a positive filter evaluation) and no further Rules in the Style are processed (\'first\' is usually the default for CSS implementations on top of Mapnik to simplify translation from CSS to Mapnik XML).',
        'default-value': 'all',
        'default-meaning': 'All Rules in a Style are processed whether they have filters or not and whether or not the filter conditions evaluate to true.' },
     'image-filters': 
      { css: 'image-filters',
        'default-value': 'none',
        'default-meaning': 'no filters',
        type: 'functions',
        functions: [Object],
        doc: 'A list of image filters that will be applied to the active rendering canvas for a given style. The presence of one more `image-filters` will trigger a new canvas to be created before starting to render a style and then this canvas will be composited back into the main canvas after rendering all features and after all `image-filters` have been applied. See `direct-image-filters` if you want to apply a filter directly to the main canvas.' },
     'image-filters-inflate': 
      { css: 'image-filters-inflate',
        'default-value': false,
        type: 'boolean',
        'default-meaning': 'No special handling will be done and image filters that blur data will only blur up to the edge of a tile boundary',
        doc: 'A property that can be set to true to enable using an inflated image internally for seamless blurring across tiles (requires buffered data).' },
     'direct-image-filters': 
      { css: 'direct-image-filters',
        'default-value': 'none',
        'default-meaning': 'no filters',
        type: 'functions',
        functions: [Object],
        doc: 'A list of image filters to apply to the main canvas (see the `image-filters` doc for how they work on a separate canvas).' },
     'comp-op': 
      { css: 'comp-op',
        'default-value': 'src-over',
        'default-meaning': 'add the current layer on top of other layers',
        doc: 'Composite operation. This defines how this layer should behave relative to layers atop or below it.',
        type: [Object] },
     opacity: 
      { css: 'opacity',
        type: 'float',
        doc: 'An alpha value for the style (which means an alpha applied to all features in separate buffer and then composited back to main buffer).',
        'default-value': 1,
        'default-meaning': 'No separate buffer will be used and no alpha will be applied to the style after rendering.' } },
  layer: 
   { name: 
      { 'default-value': '',
        type: 'string',
        required: true,
        'default-meaning': 'No layer name has been provided',
        doc: 'The name of a layer. Can be anything you wish and is not strictly validated, but ideally unique  in the map.' },
     srs: 
      { 'default-value': '',
        type: 'string',
        'default-meaning': 'No srs value is provided and the value will be inherited from the Map\'s srs',
        doc: 'The spatial reference system definition for the layer, aka the projection. Can either be a proj4 literal string like \'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\' or, if the proper proj4 epsg/nad/etc identifier files are installed, a string that uses an id like: \'+init=epsg:4326\'.' },
     status: 
      { 'default-value': true,
        type: 'boolean',
        'default-meaning': 'This layer will be marked as active and available for processing',
        doc: 'A property that can be set to false to disable this layer from being processed.' },
     minzoom: 
      { 'default-value': 0,
        type: 'float',
        'default-meaning': 'The layer will be visible at the minimum possible scale',
        doc: 'The minimum scale denominator that this layer will be visible at. A layer\'s visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6.' },
     maxzoom: 
      { 'default-value': '1.79769e+308',
        type: 'float',
        'default-meaning': 'The layer will be visible at the maximum possible scale',
        doc: 'The maximum scale denominator that this layer will be visible at. The default is the numeric limit of the C++ double type, which may vary slightly by system, but is likely a massive number like 1.79769e+308 and ensures that this layer will always be visible unless the value is reduced. A layer\'s visibility is determined by whether its status is true and if the Map scale >= minzoom - 1e-6 and scale < maxzoom + 1e-6.' },
     queryable: 
      { 'default-value': false,
        type: 'boolean',
        'default-meaning': 'The layer will not be available for the direct querying of data values',
        doc: 'This property was added for GetFeatureInfo/WMS compatibility and is rarely used. It is off by default meaning that in a WMS context the layer will not be able to be queried unless the property is explicitly set to true.' },
     'clear-label-cache': 
      { 'default-value': false,
        type: 'boolean',
        'default-meaning': 'The renderer\'s collision detector cache (used for avoiding duplicate labels and overlapping markers) will not be cleared immediately before processing this layer',
        doc: 'This property, by default off, can be enabled to allow a user to clear the collision detector cache before a given layer is processed. This may be desirable to ensure that a given layers data shows up on the map even if it normally would not because of collisions with previously rendered labels or markers.' },
     'group-by': 
      { 'default-value': '',
        type: 'string',
        'default-meaning': 'No special layer grouping will be used during rendering',
        doc: 'https://github.com/mapnik/mapnik/wiki/Grouped-rendering' },
     'buffer-size': 
      { 'default-value': 0,
        type: 'float',
        'default-meaning': 'No custom buffer will be used for the layer and rather the Map buffer-size will be used',
        doc: 'Extra tolerance around the Layer extent (in pixels) used when querying the layer data during rendering. If set this will override the Map buffer-size.' },
     'maximum-extent': 
      { 'default-value': 'none',
        type: 'bbox',
        'default-meaning': 'No clipping extent will be used',
        doc: 'An extent to be used to limit the bounds used to query this specific layer data during rendering. Should be minx, miny, maxx, maxy in the coordinates of the Layer.' } },
  symbolizers: 
   { '*': 
      { 'image-filters': [Object],
        'image-filters-inflate': [Object],
        'direct-image-filters': [Object],
        'comp-op': [Object],
        opacity: [Object] },
     map: 
      { 'background-color': [Object],
        'background-image': [Object],
        'background-image-comp-op': [Object],
        'background-image-opacity': [Object],
        srs: [Object],
        'buffer-size': [Object],
        'maximum-extent': [Object],
        base: [Object],
        'paths-from-xml': [Object],
        'minimum-version': [Object],
        'font-directory': [Object] },
     polygon: 
      { fill: [Object],
        'fill-opacity': [Object],
        gamma: [Object],
        'gamma-method': [Object],
        clip: [Object],
        simplify: [Object],
        'simplify-algorithm': [Object],
        smooth: [Object],
        'geometry-transform': [Object],
        'comp-op': [Object] },
     line: 
      { stroke: [Object],
        'stroke-width': [Object],
        'stroke-opacity': [Object],
        'stroke-linejoin': [Object],
        'stroke-linecap': [Object],
        'stroke-gamma': [Object],
        'stroke-gamma-method': [Object],
        'stroke-dasharray': [Object],
        'stroke-dashoffset': [Object],
        'stroke-miterlimit': [Object],
        clip: [Object],
        simplify: [Object],
        'simplify-algorithm': [Object],
        smooth: [Object],
        offset: [Object],
        rasterizer: [Object],
        'geometry-transform': [Object],
        'comp-op': [Object] },
     markers: 
      { file: [Object],
        opacity: [Object],
        'fill-opacity': [Object],
        stroke: [Object],
        'stroke-width': [Object],
        'stroke-opacity': [Object],
        placement: [Object],
        'multi-policy': [Object],
        'marker-type': [Object],
        width: [Object],
        height: [Object],
        fill: [Object],
        'allow-overlap': [Object],
        'avoid-edges': [Object],
        'ignore-placement': [Object],
        spacing: [Object],
        'max-error': [Object],
        transform: [Object],
        clip: [Object],
        simplify: [Object],
        'simplify-algorithm': [Object],
        smooth: [Object],
        'geometry-transform': [Object],
        offset: [Object],
        'comp-op': [Object],
        direction: [Object] },
     shield: 
      { name: [Object],
        file: [Object],
        'face-name': [Object],
        'unlock-image': [Object],
        size: [Object],
        fill: [Object],
        placement: [Object],
        'avoid-edges': [Object],
        'allow-overlap': [Object],
        margin: [Object],
        'repeat-distance': [Object],
        'minimum-distance': [Object],
        spacing: [Object],
        'minimum-padding': [Object],
        'label-position-tolerance': [Object],
        'wrap-width': [Object],
        'wrap-before': [Object],
        'wrap-character': [Object],
        'halo-fill': [Object],
        'halo-radius': [Object],
        'halo-rasterizer': [Object],
        'halo-transform': [Object],
        'halo-comp-op': [Object],
        'halo-opacity': [Object],
        'character-spacing': [Object],
        'line-spacing': [Object],
        dx: [Object],
        dy: [Object],
        'shield-dx': [Object],
        'shield-dy': [Object],
        opacity: [Object],
        'text-opacity': [Object],
        'horizontal-alignment': [Object],
        'vertical-alignment': [Object],
        'placement-type': [Object],
        placements: [Object],
        'text-transform': [Object],
        'justify-alignment': [Object],
        transform: [Object],
        clip: [Object],
        simplify: [Object],
        'simplify-algorithm': [Object],
        smooth: [Object],
        'comp-op': [Object] },
     'line-pattern': 
      { file: [Object],
        clip: [Object],
        opacity: [Object],
        simplify: [Object],
        'simplify-algorithm': [Object],
        smooth: [Object],
        offset: [Object],
        'geometry-transform': [Object],
        'comp-op': [Object] },
     'polygon-pattern': 
      { file: [Object],
        alignment: [Object],
        gamma: [Object],
        opacity: [Object],
        clip: [Object],
        simplify: [Object],
        'simplify-algorithm': [Object],
        smooth: [Object],
        'geometry-transform': [Object],
        'comp-op': [Object] },
     raster: 
      { opacity: [Object],
        'filter-factor': [Object],
        scaling: [Object],
        'mesh-size': [Object],
        'comp-op': [Object],
        'default-mode': [Object],
        'default-color': [Object],
        epsilon: [Object],
        stop: [Object] },
     point: 
      { file: [Object],
        'allow-overlap': [Object],
        'ignore-placement': [Object],
        opacity: [Object],
        placement: [Object],
        transform: [Object],
        'comp-op': [Object] },
     text: 
      { name: [Object],
        'face-name': [Object],
        size: [Object],
        'text-ratio': [Object],
        'wrap-width': [Object],
        'wrap-before': [Object],
        'wrap-character': [Object],
        'repeat-wrap-character': [Object],
        spacing: [Object],
        'character-spacing': [Object],
        'line-spacing': [Object],
        'label-position-tolerance': [Object],
        'max-char-angle-delta': [Object],
        fill: [Object],
        opacity: [Object],
        'halo-opacity': [Object],
        'halo-fill': [Object],
        'halo-radius': [Object],
        'halo-rasterizer': [Object],
        'halo-transform': [Object],
        dx: [Object],
        dy: [Object],
        'vertical-alignment': [Object],
        'avoid-edges': [Object],
        margin: [Object],
        'repeat-distance': [Object],
        'minimum-distance': [Object],
        'minimum-padding': [Object],
        'minimum-path-length': [Object],
        'allow-overlap': [Object],
        orientation: [Object],
        'rotate-displacement': [Object],
        upright: [Object],
        placement: [Object],
        'placement-type': [Object],
        placements: [Object],
        'text-transform': [Object],
        'horizontal-alignment': [Object],
        'justify-alignment': [Object],
        clip: [Object],
        simplify: [Object],
        'simplify-algorithm': [Object],
        smooth: [Object],
        'comp-op': [Object],
        'halo-comp-op': [Object],
        'font-feature-settings': [Object],
        'largest-bbox-only': [Object] },
     building: { fill: [Object], 'fill-opacity': [Object], height: [Object] },
     debug: { mode: [Object] },
     dot: 
      { fill: [Object],
        opacity: [Object],
        width: [Object],
        height: [Object],
        'comp-op': [Object] } },
  colors: 
   { aliceblue: [ 240, 248, 255 ],
     antiquewhite: [ 250, 235, 215 ],
     aqua: [ 0, 255, 255 ],
     aquamarine: [ 127, 255, 212 ],
     azure: [ 240, 255, 255 ],
     beige: [ 245, 245, 220 ],
     bisque: [ 255, 228, 196 ],
     black: [ 0, 0, 0 ],
     blanchedalmond: [ 255, 235, 205 ],
     blue: [ 0, 0, 255 ],
     blueviolet: [ 138, 43, 226 ],
     brown: [ 165, 42, 42 ],
     burlywood: [ 222, 184, 135 ],
     cadetblue: [ 95, 158, 160 ],
     chartreuse: [ 127, 255, 0 ],
     chocolate: [ 210, 105, 30 ],
     coral: [ 255, 127, 80 ],
     cornflowerblue: [ 100, 149, 237 ],
     cornsilk: [ 255, 248, 220 ],
     crimson: [ 220, 20, 60 ],
     cyan: [ 0, 255, 255 ],
     darkblue: [ 0, 0, 139 ],
     darkcyan: [ 0, 139, 139 ],
     darkgoldenrod: [ 184, 134, 11 ],
     darkgray: [ 169, 169, 169 ],
     darkgreen: [ 0, 100, 0 ],
     darkgrey: [ 169, 169, 169 ],
     darkkhaki: [ 189, 183, 107 ],
     darkmagenta: [ 139, 0, 139 ],
     darkolivegreen: [ 85, 107, 47 ],
     darkorange: [ 255, 140, 0 ],
     darkorchid: [ 153, 50, 204 ],
     darkred: [ 139, 0, 0 ],
     darksalmon: [ 233, 150, 122 ],
     darkseagreen: [ 143, 188, 143 ],
     darkslateblue: [ 72, 61, 139 ],
     darkslategrey: [ 47, 79, 79 ],
     darkturquoise: [ 0, 206, 209 ],
     darkviolet: [ 148, 0, 211 ],
     deeppink: [ 255, 20, 147 ],
     deepskyblue: [ 0, 191, 255 ],
     dimgray: [ 105, 105, 105 ],
     dimgrey: [ 105, 105, 105 ],
     dodgerblue: [ 30, 144, 255 ],
     firebrick: [ 178, 34, 34 ],
     floralwhite: [ 255, 250, 240 ],
     forestgreen: [ 34, 139, 34 ],
     fuchsia: [ 255, 0, 255 ],
     gainsboro: [ 220, 220, 220 ],
     ghostwhite: [ 248, 248, 255 ],
     gold: [ 255, 215, 0 ],
     goldenrod: [ 218, 165, 32 ],
     gray: [ 128, 128, 128 ],
     grey: [ 128, 128, 128 ],
     green: [ 0, 128, 0 ],
     greenyellow: [ 173, 255, 47 ],
     honeydew: [ 240, 255, 240 ],
     hotpink: [ 255, 105, 180 ],
     indianred: [ 205, 92, 92 ],
     indigo: [ 75, 0, 130 ],
     ivory: [ 255, 255, 240 ],
     khaki: [ 240, 230, 140 ],
     lavender: [ 230, 230, 250 ],
     lavenderblush: [ 255, 240, 245 ],
     lawngreen: [ 124, 252, 0 ],
     lemonchiffon: [ 255, 250, 205 ],
     lightblue: [ 173, 216, 230 ],
     lightcoral: [ 240, 128, 128 ],
     lightcyan: [ 224, 255, 255 ],
     lightgoldenrodyellow: [ 250, 250, 210 ],
     lightgray: [ 211, 211, 211 ],
     lightgreen: [ 144, 238, 144 ],
     lightgrey: [ 211, 211, 211 ],
     lightpink: [ 255, 182, 193 ],
     lightsalmon: [ 255, 160, 122 ],
     lightseagreen: [ 32, 178, 170 ],
     lightskyblue: [ 135, 206, 250 ],
     lightslategray: [ 119, 136, 153 ],
     lightslategrey: [ 119, 136, 153 ],
     lightsteelblue: [ 176, 196, 222 ],
     lightyellow: [ 255, 255, 224 ],
     lime: [ 0, 255, 0 ],
     limegreen: [ 50, 205, 50 ],
     linen: [ 250, 240, 230 ],
     magenta: [ 255, 0, 255 ],
     maroon: [ 128, 0, 0 ],
     mediumaquamarine: [ 102, 205, 170 ],
     mediumblue: [ 0, 0, 205 ],
     mediumorchid: [ 186, 85, 211 ],
     mediumpurple: [ 147, 112, 219 ],
     mediumseagreen: [ 60, 179, 113 ],
     mediumslateblue: [ 123, 104, 238 ],
     mediumspringgreen: [ 0, 250, 154 ],
     mediumturquoise: [ 72, 209, 204 ],
     mediumvioletred: [ 199, 21, 133 ],
     midnightblue: [ 25, 25, 112 ],
     mintcream: [ 245, 255, 250 ],
     mistyrose: [ 255, 228, 225 ],
     moccasin: [ 255, 228, 181 ],
     navajowhite: [ 255, 222, 173 ],
     navy: [ 0, 0, 128 ],
     oldlace: [ 253, 245, 230 ],
     olive: [ 128, 128, 0 ],
     olivedrab: [ 107, 142, 35 ],
     orange: [ 255, 165, 0 ],
     orangered: [ 255, 69, 0 ],
     orchid: [ 218, 112, 214 ],
     palegoldenrod: [ 238, 232, 170 ],
     palegreen: [ 152, 251, 152 ],
     paleturquoise: [ 175, 238, 238 ],
     palevioletred: [ 219, 112, 147 ],
     papayawhip: [ 255, 239, 213 ],
     peachpuff: [ 255, 218, 185 ],
     peru: [ 205, 133, 63 ],
     pink: [ 255, 192, 203 ],
     plum: [ 221, 160, 221 ],
     powderblue: [ 176, 224, 230 ],
     purple: [ 128, 0, 128 ],
     red: [ 255, 0, 0 ],
     rosybrown: [ 188, 143, 143 ],
     royalblue: [ 65, 105, 225 ],
     saddlebrown: [ 139, 69, 19 ],
     salmon: [ 250, 128, 114 ],
     sandybrown: [ 244, 164, 96 ],
     seagreen: [ 46, 139, 87 ],
     seashell: [ 255, 245, 238 ],
     sienna: [ 160, 82, 45 ],
     silver: [ 192, 192, 192 ],
     skyblue: [ 135, 206, 235 ],
     slateblue: [ 106, 90, 205 ],
     slategray: [ 112, 128, 144 ],
     slategrey: [ 112, 128, 144 ],
     snow: [ 255, 250, 250 ],
     springgreen: [ 0, 255, 127 ],
     steelblue: [ 70, 130, 180 ],
     tan: [ 210, 180, 140 ],
     teal: [ 0, 128, 128 ],
     thistle: [ 216, 191, 216 ],
     tomato: [ 255, 99, 71 ],
     turquoise: [ 64, 224, 208 ],
     violet: [ 238, 130, 238 ],
     wheat: [ 245, 222, 179 ],
     white: [ 255, 255, 255 ],
     whitesmoke: [ 245, 245, 245 ],
     yellow: [ 255, 255, 0 ],
     yellowgreen: [ 154, 205, 50 ],
     transparent: [ 0, 0, 0, 0 ] },
  filter: 
   { value: 
      [ 'true',
        'false',
        'null',
        'point',
        'linestring',
        'polygon',
        'collection' ] },
  datasources: 
   { csv: 
      { file: [Object],
        base: [Object],
        encoding: [Object],
        row_limit: [Object],
        strict: [Object],
        escape: [Object],
        quote: [Object],
        separator: [Object],
        headers: [Object],
        filesize_max: [Object] },
     gdal: { file: [Object], base: [Object], encoding: [Object] },
     geojson: 
      { file: [Object],
        base: [Object],
        encoding: [Object],
        inline: [Object] },
     occi: { encoding: [Object] },
     ogr: { file: [Object], base: [Object], encoding: [Object] },
     osm: { file: [Object], base: [Object], encoding: [Object] },
     postgis: 
      { table: [Object],
        key_field: [Object],
        key_field_as_attribute: [Object],
        encoding: [Object],
        dbname: [Object],
        host: [Object],
        password: [Object],
        port: [Object],
        user: [Object],
        connect_timeout: [Object],
        schema: [Object],
        extent: [Object],
        estimate_extent: [Object],
        geometry_table: [Object],
        geometry_field: [Object],
        cursor_size: [Object],
        row_limit: [Object],
        srid: [Object],
        initial_size: [Object],
        max_size: [Object],
        simplify_geometries: [Object],
        autodetect_key_field: [Object],
        persist_connection: [Object],
        extent_from_subquery: [Object] },
     python: { encoding: [Object] },
     raster: { file: [Object], base: [Object] },
     rasterlite: { file: [Object], base: [Object] },
     shape: { file: [Object], base: [Object], encoding: [Object] },
     sqlite: 
      { file: [Object],
        base: [Object],
        encoding: [Object],
        table: [Object],
        key_field: [Object] },
     topojson: 
      { file: [Object],
        base: [Object],
        encoding: [Object],
        inline: [Object] } } }
