{
  "fieldDBtype": "ComputationalLinguisticsDatum",
  "_id": "utils",
  "dateCreated": 1594648244936,
  "version": "v5.121.19-rc0",
  "tempId": "utils",
  "stats": {
    "characters": {
      "unigrams": {
        "0": 11,
        "1": 8,
        "2": 7,
        "3": 1,
        "4": 1,
        "5": 1,
        "9": 1,
        "/": 60,
        "*": 134,
        "!": 5,
        "\n": 298,
        " ": 987,
        "e": 406,
        "x": 34,
        "p": 188,
        "r": 368,
        "s": 166,
        "C": 11,
        "o": 181,
        "y": 75,
        "i": 213,
        "g": 63,
        "h": 45,
        "t": 345,
        "(": 67,
        "c": 101,
        ")": 67,
        "-": 12,
        "T": 15,
        "J": 1,
        "H": 1,
        "l": 104,
        "w": 26,
        "a": 292,
        "u": 157,
        "k": 18,
        "D": 6,
        "W": 2,
        "n": 257,
        "M": 3,
        "I": 3,
        "L": 1,
        "d": 70,
        "'": 64,
        ";": 75,
        ".": 61,
        "@": 44,
        "v": 72,
        "=": 78,
        "q": 25,
        "f": 102,
        "m": 74,
        "b": 43,
        "R": 3,
        "E": 7,
        "`": 22,
        "{": 63,
        "S": 23,
        "|": 15,
        "B": 11,
        "}": 63,
        "[": 16,
        "]": 16,
        ",": 21,
        "?": 3,
        ":": 27,
        "A": 7,
        "&": 2,
        "\\": 6,
        "z": 6,
        "F": 8,
        "N": 3,
        "\"": 14,
        "O": 7,
        "j": 8,
        "~": 1,
        "P": 7,
        "<": 3,
        "+": 6,
        "G": 1,
        "Q": 4
      },
      "bigrams": {}
    },
    "words": {
      "unigrams": {
        "/*!": 1,
        "*": 80,
        "express": 1,
        "Copyright(c)": 2,
        "2009-2013": 1,
        "TJ": 1,
        "Holowaychuk": 1,
        "2014-2015": 1,
        "Douglas": 1,
        "Christopher": 1,
        "Wilson": 1,
        "MIT": 1,
        "Licensed": 1,
        "*/": 16,
        "'use": 1,
        "strict';": 1,
        "/**": 15,
        "Module": 1,
        "dependencies.": 1,
        "@api": 14,
        "private": 14,
        "var": 19,
        "contentDisposition": 1,
        "=": 41,
        "require('content-disposition');": 1,
        "contentType": 1,
        "require('content-type');": 1,
        "deprecate": 1,
        "require('depd')('express');": 1,
        "flatten": 1,
        "require('array-flatten');": 1,
        "mime": 1,
        "require('send').mime;": 1,
        "basename": 1,
        "require('path').basename;": 1,
        "etag": 2,
        "require('etag');": 1,
        "proxyaddr": 1,
        "require('proxy-addr');": 1,
        "qs": 1,
        "require('qs');": 1,
        "querystring": 1,
        "require('querystring');": 1,
        "Return": 3,
        "strong": 1,
        "ETag": 2,
        "for": 10,
        "`body`.": 2,
        "@param": 15,
        "{String|Buffer}": 2,
        "body": 2,
        "{String}": 12,
        "[encoding]": 2,
        "@return": 14,
        "exports.etag": 1,
        "function": 7,
        "(body,": 1,
        "encoding)": 3,
        "{": 23,
        "buf": 2,
        "!Buffer.isBuffer(body)": 2,
        "?": 3,
        "new": 5,
        "Buffer(body,": 2,
        ":": 3,
        "body;": 2,
        "return": 22,
        "etag(buf,": 2,
        "{weak:": 2,
        "false});": 1,
        "};": 10,
        "weak": 1,
        "exports.wetag": 1,
        "wetag(body,": 1,
        "encoding){": 1,
        "true});": 1,
        "Check": 1,
        "if": 12,
        "`path`": 1,
        "looks": 1,
        "absolute.": 1,
        "path": 3,
        "{Boolean}": 1,
        "exports.isAbsolute": 1,
        "function(path){": 1,
        "('/'": 1,
        "===": 12,
        "path[0])": 1,
        "true;": 3,
        "(':'": 1,
        "path[1]": 1,
        "&&": 1,
        "('\\\\'": 1,
        "path[2]": 1,
        "||": 3,
        "'/'": 1,
        "path[2]))": 1,
        "//": 8,
        "Windows": 1,
        "device": 1,
        "('\\\\\\\\'": 1,
        "path.substring(0,": 1,
        "2))": 1,
        "Microsoft": 1,
        "Azure": 1,
        "absolute": 1,
        "Flatten": 1,
        "the": 4,
        "given": 3,
        "`arr`.": 1,
        "{Array}": 4,
        "arr": 1,
        "exports.flatten": 1,
        "deprecate.function(flatten,": 1,
        "'utils.flatten:": 1,
        "use": 2,
        "array-flatten": 1,
        "npm": 2,
        "module": 2,
        "instead');": 2,
        "Normalize": 2,
        "`type`,": 1,
        "example": 2,
        "\"html\"": 2,
        "becomes": 2,
        "\"text/html\".": 2,
        "type": 4,
        "{Object}": 4,
        "exports.normalizeType": 1,
        "function(type){": 1,
        "~type.indexOf('/')": 1,
        "acceptParams(type)": 1,
        "value:": 2,
        "mime.lookup(type),": 1,
        "params:": 2,
        "{}": 1,
        "`types`,": 1,
        "types": 1,
        "exports.normalizeTypes": 1,
        "function(types){": 1,
        "ret": 2,
        "[];": 1,
        "(var": 2,
        "i": 5,
        "0;": 1,
        "<": 3,
        "types.length;": 1,
        "++i)": 2,
        "ret.push(exports.normalizeType(types[i]));": 1,
        "}": 18,
        "ret;": 2,
        "Generate": 1,
        "Content-Disposition": 1,
        "header": 1,
        "appropriate": 1,
        "filename.": 1,
        "non-ascii": 1,
        "filenames": 1,
        "are": 1,
        "urlencoded": 1,
        "and": 2,
        "a": 2,
        "filename*": 1,
        "parameter": 1,
        "is": 1,
        "added": 1,
        "filename": 1,
        "exports.contentDisposition": 1,
        "deprecate.function(contentDisposition,": 1,
        "'utils.contentDisposition:": 1,
        "content-disposition": 1,
        "Parse": 2,
        "accept": 1,
        "params": 1,
        "`str`": 1,
        "returning": 1,
        "an": 2,
        "object": 1,
        "with": 2,
        "`.value`,": 1,
        "`.quality`": 1,
        "`.params`.": 1,
        "also": 1,
        "includes": 1,
        "`.originalIndex`": 1,
        "stable": 1,
        "sorting": 1,
        "str": 1,
        "acceptParams(str,": 1,
        "index)": 1,
        "parts": 1,
        "str.split(/": 1,
        "*;": 1,
        "*/);": 3,
        "parts[0],": 1,
        "quality:": 1,
        "1,": 1,
        "{},": 1,
        "originalIndex:": 1,
        "index": 1,
        "1;": 1,
        "parts.length;": 1,
        "pms": 1,
        "parts[i].split(/": 1,
        "*=": 1,
        "('q'": 1,
        "pms[0])": 1,
        "ret.quality": 1,
        "parseFloat(pms[1]);": 1,
        "else": 1,
        "ret.params[pms[0]]": 1,
        "pms[1];": 1,
        "Compile": 3,
        "\"etag\"": 1,
        "value": 5,
        "to": 3,
        "function.": 3,
        "{Boolean|String|Function}": 1,
        "val": 10,
        "{Function}": 3,
        "exports.compileETag": 1,
        "function(val)": 2,
        "fn;": 4,
        "(typeof": 5,
        "'function')": 3,
        "val;": 3,
        "switch": 2,
        "(val)": 2,
        "case": 8,
        "true:": 2,
        "fn": 7,
        "exports.wetag;": 2,
        "break;": 8,
        "false:": 2,
        "'strong':": 1,
        "exports.etag;": 1,
        "'weak':": 1,
        "default:": 2,
        "throw": 2,
        "TypeError('unknown": 2,
        "function:": 2,
        "'": 2,
        "+": 2,
        "val);": 2,
        "\"query": 1,
        "parser\"": 1,
        "{String|Function}": 1,
        "exports.compileQueryParser": 1,
        "compileQueryParser(val)": 1,
        "querystring.parse;": 2,
        "newObject;": 1,
        "'extended':": 1,
        "parseExtendedQueryString;": 1,
        "'simple':": 1,
        "query": 2,
        "parser": 1,
        "\"proxy": 1,
        "trust\"": 1,
        "{Boolean|String|Number|Array|Function}": 1,
        "exports.compileTrust": 1,
        "(val": 1,
        "true)": 1,
        "Support": 3,
        "plain": 1,
        "true/false": 1,
        "function(){": 1,
        "true": 2,
        "'number')": 1,
        "trusting": 1,
        "hop": 1,
        "count": 1,
        "function(a,": 1,
        "i){": 1,
        "'string')": 1,
        "comma-separated": 1,
        "values": 1,
        "val.split(/": 1,
        "*,": 1,
        "proxyaddr.compile(val": 1,
        "[]);": 1,
        "Set": 1,
        "charset": 3,
        "in": 1,
        "Content-Type": 1,
        "string.": 1,
        "exports.setCharset": 1,
        "setCharset(type,": 1,
        "charset)": 1,
        "(!type": 1,
        "!charset)": 1,
        "type;": 1,
        "parse": 1,
        "parsed": 1,
        "contentType.parse(type);": 1,
        "set": 1,
        "parsed.parameters.charset": 1,
        "charset;": 1,
        "format": 1,
        "contentType.format(parsed);": 1,
        "extended": 1,
        "string": 1,
        "qs.": 1,
        "@private": 1,
        "parseExtendedQueryString(str)": 1,
        "qs.parse(str,": 1,
        "allowPrototypes:": 1,
        "});": 1,
        "empty": 1,
        "object.": 1,
        "newObject()": 1,
        "{};": 1
      },
      "bigrams": {}
    },
    "tokens": {
      "characters": {
        "unigrams": 5823,
        "bigrams": {}
      },
      "words": {
        "unigrams": 799,
        "bigrams": {}
      }
    },
    "types": {
      "characters": 81,
      "words": 311
    }
  },
  "api": "datums",
  "datumFields": [
    {
      "fieldDBtype": "DatumField",
      "id": "orthography",
      "type": "DatumField",
      "version": "v5.121.19-rc0",
      "labelFieldLinguists": "Orthography",
      "value": "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @api private\n */\n\nvar contentDisposition = require('content-disposition');\nvar contentType = require('content-type');\nvar deprecate = require('depd')('express');\nvar flatten = require('array-flatten');\nvar mime = require('send').mime;\nvar basename = require('path').basename;\nvar etag = require('etag');\nvar proxyaddr = require('proxy-addr');\nvar qs = require('qs');\nvar querystring = require('querystring');\n\n/**\n * Return strong ETag for `body`.\n *\n * @param {String|Buffer} body\n * @param {String} [encoding]\n * @return {String}\n * @api private\n */\n\nexports.etag = function (body, encoding) {\n  var buf = !Buffer.isBuffer(body)\n    ? new Buffer(body, encoding)\n    : body;\n\n  return etag(buf, {weak: false});\n};\n\n/**\n * Return weak ETag for `body`.\n *\n * @param {String|Buffer} body\n * @param {String} [encoding]\n * @return {String}\n * @api private\n */\n\nexports.wetag = function wetag(body, encoding){\n  var buf = !Buffer.isBuffer(body)\n    ? new Buffer(body, encoding)\n    : body;\n\n  return etag(buf, {weak: true});\n};\n\n/**\n * Check if `path` looks absolute.\n *\n * @param {String} path\n * @return {Boolean}\n * @api private\n */\n\nexports.isAbsolute = function(path){\n  if ('/' === path[0]) return true;\n  if (':' === path[1] && ('\\\\' === path[2] || '/' === path[2])) return true; // Windows device path\n  if ('\\\\\\\\' === path.substring(0, 2)) return true; // Microsoft Azure absolute path\n};\n\n/**\n * Flatten the given `arr`.\n *\n * @param {Array} arr\n * @return {Array}\n * @api private\n */\n\nexports.flatten = deprecate.function(flatten,\n  'utils.flatten: use array-flatten npm module instead');\n\n/**\n * Normalize the given `type`, for example \"html\" becomes \"text/html\".\n *\n * @param {String} type\n * @return {Object}\n * @api private\n */\n\nexports.normalizeType = function(type){\n  return ~type.indexOf('/')\n    ? acceptParams(type)\n    : { value: mime.lookup(type), params: {} };\n};\n\n/**\n * Normalize `types`, for example \"html\" becomes \"text/html\".\n *\n * @param {Array} types\n * @return {Array}\n * @api private\n */\n\nexports.normalizeTypes = function(types){\n  var ret = [];\n\n  for (var i = 0; i < types.length; ++i) {\n    ret.push(exports.normalizeType(types[i]));\n  }\n\n  return ret;\n};\n\n/**\n * Generate Content-Disposition header appropriate for the filename.\n * non-ascii filenames are urlencoded and a filename* parameter is added\n *\n * @param {String} filename\n * @return {String}\n * @api private\n */\n\nexports.contentDisposition = deprecate.function(contentDisposition,\n  'utils.contentDisposition: use content-disposition npm module instead');\n\n/**\n * Parse accept params `str` returning an\n * object with `.value`, `.quality` and `.params`.\n * also includes `.originalIndex` for stable sorting\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction acceptParams(str, index) {\n  var parts = str.split(/ *; */);\n  var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index };\n\n  for (var i = 1; i < parts.length; ++i) {\n    var pms = parts[i].split(/ *= */);\n    if ('q' === pms[0]) {\n      ret.quality = parseFloat(pms[1]);\n    } else {\n      ret.params[pms[0]] = pms[1];\n    }\n  }\n\n  return ret;\n}\n\n/**\n * Compile \"etag\" value to function.\n *\n * @param  {Boolean|String|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileETag = function(val) {\n  var fn;\n\n  if (typeof val === 'function') {\n    return val;\n  }\n\n  switch (val) {\n    case true:\n      fn = exports.wetag;\n      break;\n    case false:\n      break;\n    case 'strong':\n      fn = exports.etag;\n      break;\n    case 'weak':\n      fn = exports.wetag;\n      break;\n    default:\n      throw new TypeError('unknown value for etag function: ' + val);\n  }\n\n  return fn;\n}\n\n/**\n * Compile \"query parser\" value to function.\n *\n * @param  {String|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileQueryParser = function compileQueryParser(val) {\n  var fn;\n\n  if (typeof val === 'function') {\n    return val;\n  }\n\n  switch (val) {\n    case true:\n      fn = querystring.parse;\n      break;\n    case false:\n      fn = newObject;\n      break;\n    case 'extended':\n      fn = parseExtendedQueryString;\n      break;\n    case 'simple':\n      fn = querystring.parse;\n      break;\n    default:\n      throw new TypeError('unknown value for query parser function: ' + val);\n  }\n\n  return fn;\n}\n\n/**\n * Compile \"proxy trust\" value to function.\n *\n * @param  {Boolean|String|Number|Array|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileTrust = function(val) {\n  if (typeof val === 'function') return val;\n\n  if (val === true) {\n    // Support plain true/false\n    return function(){ return true };\n  }\n\n  if (typeof val === 'number') {\n    // Support trusting hop count\n    return function(a, i){ return i < val };\n  }\n\n  if (typeof val === 'string') {\n    // Support comma-separated values\n    val = val.split(/ *, */);\n  }\n\n  return proxyaddr.compile(val || []);\n}\n\n/**\n * Set the charset in a given Content-Type string.\n *\n * @param {String} type\n * @param {String} charset\n * @return {String}\n * @api private\n */\n\nexports.setCharset = function setCharset(type, charset) {\n  if (!type || !charset) {\n    return type;\n  }\n\n  // parse type\n  var parsed = contentType.parse(type);\n\n  // set charset\n  parsed.parameters.charset = charset;\n\n  // format type\n  return contentType.format(parsed);\n};\n\n/**\n * Parse an extended query string with qs.\n *\n * @return {Object}\n * @private\n */\n\nfunction parseExtendedQueryString(str) {\n  return qs.parse(str, {\n    allowPrototypes: true\n  });\n}\n\n/**\n * Return new empty object.\n *\n * @return {Object}\n * @api private\n */\n\nfunction newObject() {\n  return {};\n}",
      "label": "orthography"
    }
  ],
  "audioVideo": [],
  "comments": []
}