)]}'
{
  "log": [
    {
      "commit": "607711222ff2484a487cdec33866b965f4a89653",
      "tree": "4b0e09df4e17aea05250b7854b7b87bb36bc01d6",
      "parents": [
        "f9c297da0299251ea5e7f60c42233abb53de233c"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Nov 27 22:07:39 2021"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Nov 27 22:07:39 2021"
      },
      "message": "README: master-\u003emain\n"
    },
    {
      "commit": "f9c297da0299251ea5e7f60c42233abb53de233c",
      "tree": "bc6b5929414b1bc425bad9888d1a1b9c7ed4bafb",
      "parents": [
        "c62a4ea1c4994989d2b55cfe260901fd608e41ce"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Nov 27 18:22:27 2021"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Nov 27 18:22:27 2021"
      },
      "message": "mod: add a compat version of go 1.12; tidy\n"
    },
    {
      "commit": "c62a4ea1c4994989d2b55cfe260901fd608e41ce",
      "tree": "ee3321821a8c3b0f5c5d692345d8f7adfd64d82f",
      "parents": [
        "1454fab16a0642638feb0ae98c41f79eccb2a20a"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Nov 27 18:17:49 2021"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Nov 27 18:17:49 2021"
      },
      "message": "mod: commit go.sum (oops)\n"
    },
    {
      "commit": "1454fab16a0642638feb0ae98c41f79eccb2a20a",
      "tree": "eb7b240fc48818d650ba10133fb2bcc22050bd1e",
      "parents": [
        "117a925f21509a9550f452433c190139e480a726"
      ],
      "author": {
        "name": "lpusok",
        "email": "7979773+lpusok@users.noreply.github.com",
        "time": "Thu Dec 03 08:07:18 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 03 08:07:18 2020"
      },
      "message": "text: add \u0027 to the runes to be quoted when using OpenStep format (#64)\n\nReceived a \"error parsing text property list: missing ; in dictionary ..\" error\r\nwhen opening an Xcode project saved encoded by the package.\r\nFound the root cause to be a dictionary value containing an apostrophe, e.g. \"JSON\u0027s\".\r\nAdded this character to the bitmap containing quotable chars.\r\n\r\nFixes https://github.com/DHowett/go-plist/issues/65.\r\n"
    },
    {
      "commit": "117a925f21509a9550f452433c190139e480a726",
      "tree": "a000ad9754676a2904be6c54be2618052ef31199",
      "parents": [
        "2d98b15cd319e41e074d07e78b8f5d43d9e6e19f"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Oct 26 04:55:17 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Oct 26 04:55:17 2020"
      },
      "message": "unmarshal: replace manual array element copy with reflect.Copy\n\nThis commit also adds a benchmark for array unmarshaling. The difference\nis staggering.\n\nname                   old time/op    new time/op    delta\nLargeArrayUnmarshal-4    23.4µs ± 2%     0.4µs ± 2%  -98.49%  (p\u003d0.000 n\u003d9+9)\n\nname                   old alloc/op   new alloc/op   delta\nLargeArrayUnmarshal-4     96.0B ± 0%    128.0B ± 0%  +33.33%  (p\u003d0.000 n\u003d10+10)\n\nname                   old allocs/op  new allocs/op  delta\nLargeArrayUnmarshal-4      3.00 ± 0%      4.00 ± 0%  +33.33%  (p\u003d0.000 n\u003d10+10)\n"
    },
    {
      "commit": "2d98b15cd319e41e074d07e78b8f5d43d9e6e19f",
      "tree": "42ca289f2ac148a9dcc2277c8ada75846f774a2a",
      "parents": [
        "3b63eb3a43b59c776909681ed1fcb412b47d3c9a"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Oct 25 22:59:08 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Oct 25 22:59:37 2020"
      },
      "message": "un/marshal: properly handle byte arrays (which don\u0027t support .Bytes)\n\nFixes https://github.com/DHowett/go-plist/issues/61\n"
    },
    {
      "commit": "3b63eb3a43b59c776909681ed1fcb412b47d3c9a",
      "tree": "f3d03d4cc34d827a985b5a0bf46e2dc2aeb5383b",
      "parents": [
        "c2293a37d45736de8fb259e3efc519d332c5d636"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 22:17:36 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 22:17:36 2020"
      },
      "message": "text: break up accidental doc comment\n"
    },
    {
      "commit": "c2293a37d45736de8fb259e3efc519d332c5d636",
      "tree": "1a427bb6ca915c6200785ea9e84936b25e68f17f",
      "parents": [
        "ca3647c18dab774854fb9e57ac3e9ab274401b74"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 21:37:33 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 21:37:33 2020"
      },
      "message": "test: whoops, forgot to commit part of the change for dump\n"
    },
    {
      "commit": "ca3647c18dab774854fb9e57ac3e9ab274401b74",
      "tree": "aa614f90b7370a21e23b8aa9fda8b9545e1b9e71",
      "parents": [
        "05a1d191647fa9eaf33911312b61b1172e7d22e9"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 21:34:24 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 21:34:24 2020"
      },
      "message": "add a minimal Go .gitignore\n"
    },
    {
      "commit": "05a1d191647fa9eaf33911312b61b1172e7d22e9",
      "tree": "0d28a529da5979b2aae85b0e978f546eddb13cd5",
      "parents": [
        "3dcb2658f7bb3089f51676ddd47054d556665f48"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Feb 14 03:18:00 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 21:32:55 2020"
      },
      "message": "int/cmd: add tabler, charset generator\n"
    },
    {
      "commit": "3dcb2658f7bb3089f51676ddd47054d556665f48",
      "tree": "31fefc341ced4225056720bc1a370fc1a0b5bb7d",
      "parents": [
        "e8ad40456f146cd38c7a8b24bf9c44b9348f5f9b"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 21:29:08 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 21:29:08 2020"
      },
      "message": "test: add a primitive \"test case dumper\"\n\n`go test -tags dump` will produce a directory containing all of plist\u0027s\ntest collateral.\n"
    },
    {
      "commit": "e8ad40456f146cd38c7a8b24bf9c44b9348f5f9b",
      "tree": "b961f5a18cf410ad63d40e2c9529f5d70b946a8a",
      "parents": [
        "2d6d0801777881d56f903376d3aa12b2dfee903d"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 20:38:58 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 20:42:04 2020"
      },
      "message": "text: Add support for quoted GNUStep extended values\n\nGNUStep is very lax when it comes to parsing these. Closing quotes\naren\u0027t required (as pointed out by @Artoria2e5, and held up by empirical\nvalidation), so all we need to do is strip a closing \" even if we don\u0027t\ndetect an opening one.\n\nThis commit also fleshes out the invalid test cases for \u003c* and reworks\nsome of the error-handling logic to make the errors clearer.  Type\nchecks have been lifted up to the head of the ext. val. parser and the\nemptiness check has been tidied up a bit.\n\nCo-authored-by: Mingye Wang \u003carthur200126@gmail.com\u003e\n\nCloses https://github.com/DHowett/go-plist/pull/51.\n"
    },
    {
      "commit": "2d6d0801777881d56f903376d3aa12b2dfee903d",
      "tree": "f788afdff58bc360005d3778b8b4c501cc1768b5",
      "parents": [
        "a71bd315c28709e2be8c963d6d99bbc44f570f9b"
      ],
      "author": {
        "name": "Mingye Wang",
        "email": "arthur200126@gmail.com",
        "time": "Sat Feb 22 22:18:39 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 20:42:04 2020"
      },
      "message": "text: add links to the GS and CF parsers and implementation notes\n"
    },
    {
      "commit": "a71bd315c28709e2be8c963d6d99bbc44f570f9b",
      "tree": "4a7a132df6a44a02bb012db02a6ca1e404a2723f",
      "parents": [
        "77e249a2e2ba6362794925035a31bea61b902a1e"
      ],
      "author": {
        "name": "Mingye Wang",
        "email": "arthur200126@gmail.com",
        "time": "Sun Apr 19 20:21:34 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Apr 19 20:41:44 2020"
      },
      "message": "text: add support for parsing GNUStep base64 values\n\nGNUStep parses \u003c[xxx]\u003e as a base64-encoded NSData using\nNSDataBase64DecodingIgnoreUnknownCharacters. It\u0027s fairly robust.\n\nCo-authored-by: Dustin L. Howett \u003cdustin@howett.net\n\nCoauthor notes:\nI elevated the base64 string Map filter to a tabled character set and\nadded characterSet.Map() so that it could plug into strings.Map.\n\nI\u0027ve also gone ahead and added some failure case tests and a couple\nextra tests for data that doesn\u0027t contain base64 characters.\n\nReferences https://github.com/DHowett/go-plist/pull/51.\n\nSquashed commit of the following (from Mingye)\n\ncommit 767da5373da65ab45885d84aa4cec6f3a8d65f0c\n    Add test case for GNUstep base64 parsing\ncommit 748f6fc4e0afe16daa34534b7b02ca61676355b6\n    Update text_parser.go: lowercase strings\ncommit 9d912f71f6e86967e2a110db789c8e43b152997c\n    text_parser: add gnustep base64 parsing\n"
    },
    {
      "commit": "77e249a2e2ba6362794925035a31bea61b902a1e",
      "tree": "da3d76d754f0b6a1a0a003c88fb39316b7f04718",
      "parents": [
        "7b84bae5ce8613f6cf47b122f9bd8fa5f22be405"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Feb 25 05:07:39 2020"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Feb 25 05:07:39 2020"
      },
      "message": "add a GitHub CI configuration\n\nRight now, it only runs for Go 1.13.\n"
    },
    {
      "commit": "7b84bae5ce8613f6cf47b122f9bd8fa5f22be405",
      "tree": "e0b3adfba14b1a05609ff3ee8d9acd885ec8831c",
      "parents": [
        "591f970eefbbeb04d7b37f334a0c4c3256e32876"
      ],
      "author": {
        "name": "Mingye Wang",
        "email": "arthur200126@gmail.com",
        "time": "Tue Feb 25 04:44:08 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 25 04:44:08 2020"
      },
      "message": "Enable CF$UID packing for *step formats (#54)\n\nAlthough Apple\u0027s NSKeyedArchiver does not want to encode to things that are neither XML nor binary, GNUstep\u0027s version has no such limitation. On GNUstep they do what Apple does for XML for the text format too.\r\n\r\nThe proposed change consolidates the packing into one place.\r\n\r\nCloses https://github.com/DHowett/go-plist/issues/53."
    },
    {
      "commit": "591f970eefbbeb04d7b37f334a0c4c3256e32876",
      "tree": "c7552a15b28564e3721c6568d28a67e25efd8c89",
      "parents": [
        "fed556ad7290c39f5b02b57370fa61251c6615f6"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Nov 24 03:47:31 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Nov 24 03:47:31 2018"
      },
      "message": "mod: add go.mod with ply\u0027s dependencies\n"
    },
    {
      "commit": "fed556ad7290c39f5b02b57370fa61251c6615f6",
      "tree": "848d1661022436e258a7bc3d8bb88211166e96fb",
      "parents": [
        "0aade0c793b418c3e4579ec6e8f22d458f56ee0e"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Jul 29 00:26:49 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Jul 29 00:26:51 2018"
      },
      "message": "plait: add experimental wasm plist stuff\n"
    },
    {
      "commit": "0aade0c793b418c3e4579ec6e8f22d458f56ee0e",
      "tree": "b101f947fa18434dc4f79f55a35daea588a5d54c",
      "parents": [
        "500bd5b9081b5957ac10389f86e069869f00c348"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Jun 13 23:21:21 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Jun 13 23:21:21 2018"
      },
      "message": "testdata: add saurik\u0027s unusual xml property lists\n"
    },
    {
      "commit": "500bd5b9081b5957ac10389f86e069869f00c348",
      "tree": "c049587ab2dc12d552ff38803b9fbe5e7c031cbc",
      "parents": [
        "d0aa440862e7ae085bf1439fdf28b37320a04226"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Jun 09 05:43:31 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Jun 09 05:43:37 2018"
      },
      "message": "infra: remove the travis CI configuration\n\n[skip ci]\n"
    },
    {
      "commit": "d0aa440862e7ae085bf1439fdf28b37320a04226",
      "tree": "705a9c2f43e0f01ccc82780f537fd0a04d585756",
      "parents": [
        "3bf914ef8f3a8bec3df2721a531d3a693c0a3db9"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Jun 06 07:14:57 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Jun 06 07:21:58 2018"
      },
      "message": "unmarshal: always overwrite duplicate keys in target maps\n\nThis change introduces a difference in parsing from the reference\nparser: the reference parser will always choose the _first_ value seen\nassociated with a key, while we will always choose the _last_.\n\nThis is not regarded as a compatibility issue, as there is no way to\nprovide a useful and re-serializable value in the presence of duplicate\nkeys.\n\nFixes https://github.com/DHowett/go-plist/issues/37.\n"
    },
    {
      "commit": "3bf914ef8f3a8bec3df2721a531d3a693c0a3db9",
      "tree": "5f0508621b69ca57be81b93b8921523c434ee930",
      "parents": [
        "84d08b7bddb35583bb3153b811c6cc52bb306f52"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Apr 27 15:53:33 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Apr 27 15:53:33 2018"
      },
      "message": "README: Update the coverage badge URL"
    },
    {
      "commit": "84d08b7bddb35583bb3153b811c6cc52bb306f52",
      "tree": "103a82f622bcb509853aa9fd000ad0d7c543670d",
      "parents": [
        "a43036ad4bf892c7bf15891bf0c8a486b80cd6fd"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Feb 14 08:12:42 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Feb 17 08:03:26 2018"
      },
      "message": "xml: rewrite the xml generator to avoid xml.Encoder\n\nThis commit intoduces a mostly hand-rolled XML encoder inspired by\nxml.Encoder. Since plist is a simple format that doesn\u0027t require\nattributes, only has one data type with encodeable input and is\notherwise constrained, we don\u0027t need the full power of encoding/xml.\n\nThe encoder\u0027s speed, memory requirements and number of allocations are\nall improved.\n\nIn addition, we can now emit self-closing tags for empty elements\n(\u003ckey\u003e\u003c/key\u003e -\u003e \u003ckey/\u003e).\n\nFixes https://github.com/DHowett/go-plist/issues/34.\n\nname                    old time/op    new time/op    delta\nXMLEncode-4               25.9µs ± 3%    14.9µs ± 1%   -42.66%\nBigXMLGenerate-4          47.3ms ± 1%    23.7ms ± 1%   -49.91%\nBigPrettyXMLGenerate-4    55.0ms ± 1%    30.0ms ± 1%   -45.42%\nXMLGenerate-4             16.0µs ± 1%     5.8µs ± 1%   -63.81%\n\nname                    old alloc/op   new alloc/op   delta\nXMLEncode-4               8.71kB ± 0%    6.42kB ± 0%   -26.26%\nBigXMLGenerate-4          2.62MB ± 0%    1.60MB ± 0%   -39.02%\nBigPrettyXMLGenerate-4    2.62MB ± 0%    1.60MB ± 0%   -39.02%\nXMLGenerate-4             5.83kB ± 0%    4.50kB ± 0%   -22.77%\n\nname                    old allocs/op  new allocs/op  delta\nXMLEncode-4                 88.0 ± 0%      63.0 ± 0%   -28.41%\nBigXMLGenerate-4           86.7k ± 0%     72.6k ± 0%   -16.24%\nBigPrettyXMLGenerate-4     86.7k ± 0%     72.6k ± 0%   -16.24%\nXMLGenerate-4               54.0 ± 0%      31.0 ± 0%   -42.59%\n"
    },
    {
      "commit": "a43036ad4bf892c7bf15891bf0c8a486b80cd6fd",
      "tree": "5a21ad05db15fba715d750a00e66e9e3c19c5823",
      "parents": [
        "16bdb680e0844dde2e603e14e7e5e2438aa1d044"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Feb 11 07:30:35 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Feb 11 07:30:36 2018"
      },
      "message": "test: clean up some of the test case data\n\nA number of our hand-crafted binary plists had a sortVersion \u003e 0x00,\nand the \"strange characters\" text tests were hex-encoded for some\nreason.\n"
    },
    {
      "commit": "16bdb680e0844dde2e603e14e7e5e2438aa1d044",
      "tree": "d9d40724ebdbcc7034388abd55e95a9b1ea54848",
      "parents": [
        "c88f0fcad6ddb0b87368d435ac087b1a1ecdf21b"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Feb 11 06:11:17 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Feb 11 06:11:17 2018"
      },
      "message": "bplist: store high-half u64 that don\u0027t overlap s64 as s128\n\nThis fixes a long-standing bug where we would serialize unsigned 64-bit\nintegers \u003e\u003d 0x8000000000000000 in violation of the bplist00 spec. The\nspec tells us that _all_ 64-bit values are signed. Those high-half\n64-bit integers are meant to be stored as signed 128-bit integers with a\nhigh half of 0x0000000000000000.\n\nTests have been updated to reflect this.\n"
    },
    {
      "commit": "c88f0fcad6ddb0b87368d435ac087b1a1ecdf21b",
      "tree": "f7e2255485b32a158ffd35abc6c939a63bab6d29",
      "parents": [
        "f270eba7ede9916a8d8c2c25d80e0ce4fb2f21fd"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Feb 11 05:28:04 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Feb 11 05:28:04 2018"
      },
      "message": "bplist: sign-extend negative 64-bit integers lest we decode them wrong\n\nThis commit builds on @gumpyoung\u0027s work in\nhttps://github.com/DHowett/go-plist/pull/35.\n\nFixes https://github.com/DHowett/go-plist/issues/36.\nFixes https://gitlab.howett.net/DHowett/plist/issues/32.\n"
    },
    {
      "commit": "f270eba7ede9916a8d8c2c25d80e0ce4fb2f21fd",
      "tree": "7034ac64bce91afc272817bd611a47b6ef27271c",
      "parents": [
        "233df3c4f07b0c562da0e8a6fb850681ac49bb90"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Feb 08 08:19:44 2018"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Feb 08 08:19:44 2018"
      },
      "message": "test: really print the actual document when encode fails\n"
    },
    {
      "commit": "233df3c4f07b0c562da0e8a6fb850681ac49bb90",
      "tree": "fabdf4df6eda3e64c6812ea7f21850a67f389019",
      "parents": [
        "a989d311d63a7a687750be579b55f62fa5794aef"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Nov 05 00:43:39 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Nov 05 00:45:07 2017"
      },
      "message": "[test] Fix a bad format call uncovered by go-vet devel fc768da8\n"
    },
    {
      "commit": "a989d311d63a7a687750be579b55f62fa5794aef",
      "tree": "1faafba6c6ad6864a21cd924e36a9c5a03302924",
      "parents": [
        "487325fdf24d0b27ca779dbbfcad9ab36dbcc420"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Nov 05 00:33:01 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Nov 05 00:33:18 2017"
      },
      "message": "[ply] Stop double- or triple-printing the helpstring\n"
    },
    {
      "commit": "487325fdf24d0b27ca779dbbfcad9ab36dbcc420",
      "tree": "8969e54b7e93294e275f7e803516304f05e2c0fb",
      "parents": [
        "f00f32b327ca6ad11a7c53d9ccc34d031b3795b8"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Oct 18 16:58:21 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Oct 18 16:58:22 2017"
      },
      "message": "[ply] Fix the import path in the readme\n\nRefs #22.\n"
    },
    {
      "commit": "f00f32b327ca6ad11a7c53d9ccc34d031b3795b8",
      "tree": "f3a8dd9ead2984fdfdbccd4350a63ae92c2254fd",
      "parents": [
        "77af5fce0a9b1ee584eb1a89b2a15afa0507de24"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Oct 13 06:19:50 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Oct 13 06:23:45 2017"
      },
      "message": "[gitlab] Add 1.2 \u0026 appengine runs\n"
    },
    {
      "commit": "77af5fce0a9b1ee584eb1a89b2a15afa0507de24",
      "tree": "d6de50228549c165c1cea704eafc45fa57a09675",
      "parents": [
        "64fa786e1e4ee56c4ecdca7bae60c5e5fa8cc030"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Oct 13 05:15:16 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Oct 13 05:15:16 2017"
      },
      "message": "[README] Add a coverage badge\n"
    },
    {
      "commit": "64fa786e1e4ee56c4ecdca7bae60c5e5fa8cc030",
      "tree": "dfa86fa9b3083142262f50a98cf9f94ab5e10639",
      "parents": [
        "b9583c7fbe3509ec690e965abf8b90a1563c66ad"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Oct 13 05:10:22 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Oct 13 05:12:51 2017"
      },
      "message": "[gitlab] Add a CI config that tests on Go 1.4, 1.6 \u0026 latest\n"
    },
    {
      "commit": "b9583c7fbe3509ec690e965abf8b90a1563c66ad",
      "tree": "129d901400e788b631987651adcefc2c64091f53",
      "parents": [
        "c018539ce5bd5bfbacd6bb16c32785e7a0402ab4"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Sep 06 05:27:21 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Sep 06 05:27:21 2017"
      },
      "message": "[ply] move to cmd/\n"
    },
    {
      "commit": "c018539ce5bd5bfbacd6bb16c32785e7a0402ab4",
      "tree": "5e60484c7b9928e5f3a82483d6df43f62e5d656b",
      "parents": [
        "2f847ea62b17703c861484a09f0e5841328a2cb9"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Apr 26 03:35:54 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Apr 26 03:35:54 2017"
      },
      "message": "[xml] Split the parser/generator into separate files\n"
    },
    {
      "commit": "2f847ea62b17703c861484a09f0e5841328a2cb9",
      "tree": "095e69af311b7225a8ecb5f22a1c4e4cc249c8ae",
      "parents": [
        "f0ef9988206377b770f6e411002be7594c2881a6"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 18:37:31 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 18:37:33 2017"
      },
      "message": "[test] Add a subtest shim for Go \u003c1.7, drop low compat end to Go 1.2\n"
    },
    {
      "commit": "f0ef9988206377b770f6e411002be7594c2881a6",
      "tree": "5af5ae03ef0f276b10cd892e0a24ab8e8d517dd7",
      "parents": [
        "c17dcc5f37b9733ee759dc22a39d5087a3325457"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 16:12:29 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 16:13:10 2017"
      },
      "message": "[test] Rearrange all the tests/use subtests\n\nThis commit moves all of the text tests into the common tests, the\ninvalid tests out of the common tests (since the test fixtures had to\nhave a lot of logic to handle \"expected fail\" tests, and it wasn\u0027t a\ngood idea anyway), and moves all formats into their own subtests.\n\nTestData\u0027s members have been renamed to make them less naive.\n"
    },
    {
      "commit": "c17dcc5f37b9733ee759dc22a39d5087a3325457",
      "tree": "8c1b607c825359970de3402fded85b80cd48e892",
      "parents": [
        "c4a68d895d5012d89897ed90cccafa265acbad0f"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Apr 19 03:55:14 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:19:58 2017"
      },
      "message": "[text] Rewrite the text plist parser to be like text/template/parser\n\nThis commit overhauls the text property list parser, reducing the cost\nin time and memory and overall sanity required to parse text property\nlist documents.\n\nHerein, support is also added for:\n* UTF-16 text property lists (#26)\n* Proper scanning of UTF-8 codepoints\n* Encoding conversion (UTF-16{BE,LE) +- BOM -\u003e UTF-8)\n* Empty data values, \u003c\u003e\n* Error messages that include line and column info (#25)\n* Legacy strings file format (dictionary without { }) (#27)\n* Shortcut strings file format (dictionaries without values) (#27)\n* Short hex/unicode/octal escapes (\\x2, \\u33, \\0)\n* Empty documents parsing as empty dictionaries\n* Detection of garbage after the end of a document\n\nThe character tables have been augmented with their own characterSet\ntype, which allows them to report on their own residence. All characters\noutside the 0-255 range will be considered \"not in set\" for now.\n\nIn the benchmarks below, *Step(Parse|Decode) operate on a relatively\nsmall synthetic property list that contains every property list type.\nBigParse operates on a ~700kb binary property list created by converting\nthe iTunes software update catalog from XML to GNUStep or OpenStep.\nPretty benchmarks include whitespace.\n\nbenchmark                             old ns/op     new ns/op     delta\nBenchmarkBigGNUStepParse-4            125008990     33544860      -73.17%\nBenchmarkBigPrettyGNUStepParse-4      54869160      38049063      -30.65%\nBenchmarkBigOpenStepParse-4           124436480     31491614      -74.69%\nBenchmarkBigPrettyOpenStepParse-4     54080760      34542446      -36.13%\nBenchmarkOpenStepParse-4              20177         13894         -31.14%\nBenchmarkGNUStepParse-4               18742         15087         -19.50%\n\nbenchmark                             old allocs     new allocs     delta\nBenchmarkBigGNUStepParse-4            2248154        120655         -94.63%\nBenchmarkBigPrettyGNUStepParse-4      969515         120655         -87.56%\nBenchmarkBigOpenStepParse-4           2251448        120655         -94.64%\nBenchmarkBigPrettyOpenStepParse-4     969541         120655         -87.56%\nBenchmarkOpenStepParse-4              234            44             -81.20%\nBenchmarkGNUStepParse-4               186            47             -74.73%\n\nbenchmark                             old bytes     new bytes     delta\nBenchmarkBigGNUStepParse-4            67633657      24006777      -64.50%\nBenchmarkBigPrettyGNUStepParse-4      30100843      24006784      -20.25%\nBenchmarkBigOpenStepParse-4           67657126      24023625      -64.49%\nBenchmarkBigPrettyOpenStepParse-4     30101001      24023619      -20.19%\nBenchmarkOpenStepParse-4              15376         10192         -33.71%\nBenchmarkGNUStepParse-4               14992         10320         -31.16%\n\nFixes #25\nFixes #26\nFixes #27\n"
    },
    {
      "commit": "c4a68d895d5012d89897ed90cccafa265acbad0f",
      "tree": "51915032743582de737b29fa657f52a4f3767af1",
      "parents": [
        "4133aaab6683f5bf069fd814d7fb1af1c0c661af"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Apr 21 06:01:43 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:19:58 2017"
      },
      "message": "[text] Expand the text test collateral\n\nEmpty data plists, \u003c\u003e, are no longer invalid.\n"
    },
    {
      "commit": "4133aaab6683f5bf069fd814d7fb1af1c0c661af",
      "tree": "2ff2e2190fe3d3f0e9b875e6de11c02bb8617d91",
      "parents": [
        "779f22da54d1b75817333ec2c9fddcdff91694c7"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Apr 21 06:05:41 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:19:58 2017"
      },
      "message": "[text] Split the parser/generator into separate files\n"
    },
    {
      "commit": "779f22da54d1b75817333ec2c9fddcdff91694c7",
      "tree": "77572b9ee5bf96db5c8b508dde1271fc66842edb",
      "parents": [
        "fc3f05fd28e32f073cf2901f1370268375c0a9e6"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Apr 21 06:15:57 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:19:58 2017"
      },
      "message": "[test] Run each Encode test as a subtest\n"
    },
    {
      "commit": "fc3f05fd28e32f073cf2901f1370268375c0a9e6",
      "tree": "ff12a50a2871f9f7e3e0c4043a26e210884d8516",
      "parents": [
        "3df3cb8eeb72fb3598a8b90d2d7217fc2581ea24"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Apr 21 06:01:16 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:19:58 2017"
      },
      "message": "[test] Run each Decode test as a subtest\n"
    },
    {
      "commit": "3df3cb8eeb72fb3598a8b90d2d7217fc2581ea24",
      "tree": "42e7c5468b84aebb65524330689c2987fa83473c",
      "parents": [
        "57d3140a13aacb7b7d736f5f5d190666d639753a"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Apr 21 07:55:07 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:19:58 2017"
      },
      "message": "[travis] Test the appengine tag as well\n"
    },
    {
      "commit": "57d3140a13aacb7b7d736f5f5d190666d639753a",
      "tree": "5b295dcefb67dc357eb161f56e0250950f18aa2e",
      "parents": [
        "fdb43dd667f26e0377849a1474ae6b8dab7aedbb"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Apr 19 02:21:23 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:19:58 2017"
      },
      "message": "[bplist] Share the plist\u0027s backing buffer for ASCII strings\n\nThis commit includes a fallback for appengine builds that keeps the\noriginal copying behavior.\n\nbenchmark                     old ns/op     new ns/op     delta\nBenchmarkBigBplistParse-4     9803683       9587863       -2.20%\nBenchmarkBplistParse-4        9171          8743          -4.67%\nBenchmarkBplistDecode-4       10613         10063         -5.18%\n\nbenchmark                     old allocs     new allocs     delta\nBenchmarkBigBplistParse-4     64311          58238          -9.44%\nBenchmarkBplistParse-4        50             43             -14.00%\nBenchmarkBplistDecode-4       54             47             -12.96%\n\nbenchmark                     old bytes     new bytes     delta\nBenchmarkBigBplistParse-4     5951707       5544876       -6.84%\nBenchmarkBplistParse-4        3808          3760          -1.26%\nBenchmarkBplistDecode-4       4032          3984          -1.19%\n"
    },
    {
      "commit": "fdb43dd667f26e0377849a1474ae6b8dab7aedbb",
      "tree": "8ca0f91a005229a5de31adff2c4ac6f51cf824ad",
      "parents": [
        "a62b35c98df5cd867608c0397a778b9c1b714a37"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Apr 14 04:11:32 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:19:57 2017"
      },
      "message": "[bplist] Rewrite the parser to operate on memory instead of a ReadSeeker\n\nThis rewrite reduces the time and memory required to parse binary\nproperty lists. Validation was performed via coverage-directed fuzzing.\n\nIn the benchmarks below, Bplist(Parse|Decode) operate on a relatively\nsmall synthetic property list that contains every property list type.\nBigBplistParse operates on a ~700kb binary property list created by\nconverting the iTunes software update catalog from XML to binary.\n\nbenchmark                     old ns/op     new ns/op     delta\nBenchmarkBplistParse-4        26971         8597          -68.13%\nBenchmarkBplistDecode-4       27148         10356         -61.85%\nBenchmarkBigBplistParse-4     33316470      10815886      -67.54%\n\nbenchmark                     old allocs     new allocs     delta\nBenchmarkBplistParse-4        324            50             -84.57%\nBenchmarkBplistDecode-4       327            54             -83.49%\nBenchmarkBigBplistParse-4     438561         64311          -85.34%\n\nbenchmark                     old bytes     new bytes     delta\nBenchmarkBplistParse-4        4688          3808          -18.77%\nBenchmarkBplistDecode-4       4768          4032          -15.44%\nBenchmarkBigBplistParse-4     7980868       5951717       -25.43%\n\nThe time and allocation gains are visible across the board, and\nconsistent between large and small property lists. The number of bytes\nallocated and copied is drastically better in the large property list\ncase.\n"
    },
    {
      "commit": "a62b35c98df5cd867608c0397a778b9c1b714a37",
      "tree": "4029a4bc2764ef999f890ce786930299a0e1b45c",
      "parents": [
        "795cf23fd27fdbda70145d79acd9670319f8a622"
      ],
      "author": {
        "name": "Bobrnor",
        "email": "me@bobrnor.com",
        "time": "Mon Apr 24 03:18:05 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Apr 24 03:18:05 2017"
      },
      "message": "[bplist] Encode all high Latin1 characters (\u003e0x7f) as UTF16 (#28)\n\n"
    },
    {
      "commit": "795cf23fd27fdbda70145d79acd9670319f8a622",
      "tree": "9990671a6a322786ef73ffa50bfc19d4dd4e30ec",
      "parents": [
        "8e2923602a784d80f713b9350ba9ef2700fe51bf"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Mar 30 01:53:21 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Mar 30 02:07:07 2017"
      },
      "message": "[bplist] Rewrite the object parser to add cycle detection\n\nThis commit:\n- Replaces valueAtOffset with objectAtIndex, which does boundary checks\n- Replaces most uses of object offsets with object IDs\n- Adds object IDs to most error messages\n- Cleans up the dictionary and array deserializers\n- Adds support for cycle detection; this can be optimized if necessary,\n  but as long as object graphs remain shallow should be performant\n- Removes the full object table deserialization step; only objects\n  referred to directly by the root object will be deserialized.\n- Introduces must/must2 to remove some error panics from\n  bplist_parser.go\n\nFixes #23.\n"
    },
    {
      "commit": "8e2923602a784d80f713b9350ba9ef2700fe51bf",
      "tree": "ea880bfe379cd630cd3519c4aefea43e475a593a",
      "parents": [
        "b6f6787c2abe9eb3ba2f49d62e01337eb8b28247"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Mar 30 00:59:01 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Mar 30 00:59:11 2017"
      },
      "message": "[bplist] Split the parser/generator into separate files\n"
    },
    {
      "commit": "b6f6787c2abe9eb3ba2f49d62e01337eb8b28247",
      "tree": "0b17c20a8b1ff05ac5c002246ff710d73032a178",
      "parents": [
        "c0bafb47a189f1a02b9ad8aac4cc8fd429a374da"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 18:19:38 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 18:19:38 2017"
      },
      "message": "[all] Fix some lint complaints.\n"
    },
    {
      "commit": "c0bafb47a189f1a02b9ad8aac4cc8fd429a374da",
      "tree": "eb9dfa72f31099b446891ecc999ad834e901dc87",
      "parents": [
        "445e867a489c0469c517d26865e88c4a17e9b4b4"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 16:04:59 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 16:05:48 2017"
      },
      "message": "[tests] Don\u0027t return, just continue when a test should fail.\n"
    },
    {
      "commit": "445e867a489c0469c517d26865e88c4a17e9b4b4",
      "tree": "f7cec23a18f41ead6b1187794bf8f24186b5fdd1",
      "parents": [
        "1f7000b17b38982fff696f93b45b904e3c7c54c0"
      ],
      "author": {
        "name": "KenjiTakahashi",
        "email": "wozniakk@gmail.com",
        "time": "Thu Mar 31 16:19:23 2016"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 16:05:24 2017"
      },
      "message": "[xml] Add support for integers in bases other than 10. (#19)\n"
    },
    {
      "commit": "1f7000b17b38982fff696f93b45b904e3c7c54c0",
      "tree": "fb0cbf0a3518fe4be6586e06a888d318b9f50c97",
      "parents": [
        "0ef3201fd4ae3ea251e5563fe3a1c7f881759c14"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:18:13 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:18:13 2017"
      },
      "message": "[text] Fix a test that didn\u0027t cover what I intended.\n"
    },
    {
      "commit": "0ef3201fd4ae3ea251e5563fe3a1c7f881759c14",
      "tree": "659d2a3d8de28cb0bc1219355f6c6206ce76d09b",
      "parents": [
        "db8e3696430f9721a2457883c5103e9348fa0708"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:14:25 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:14:25 2017"
      },
      "message": "[all] remove the not-yet-ready cfNull support\n"
    },
    {
      "commit": "db8e3696430f9721a2457883c5103e9348fa0708",
      "tree": "978bb2c0d41ea4e30c7eb5b8e0523ff72a8a6620",
      "parents": [
        "f630cb4e453ddb426facff864eff43d353c88bd9"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:12:34 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:12:37 2017"
      },
      "message": "[unmarshal] Simplify cfNumber\u0027s interface unmarshaler\n"
    },
    {
      "commit": "f630cb4e453ddb426facff864eff43d353c88bd9",
      "tree": "7d84ff702232f86eafdde5b89b32c6edabbf7eca",
      "parents": [
        "73cd20e93e6b37d75924c3f1c3f1b230c0526d49"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:12:02 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:12:02 2017"
      },
      "message": "[marshal] Add an invalid marshaling test.\n"
    },
    {
      "commit": "73cd20e93e6b37d75924c3f1c3f1b230c0526d49",
      "tree": "8abcae78f8972a7ec3cb17d53e84a068b71c00a6",
      "parents": [
        "6017651bcf9e47441e0db433f408b962320f8a3a"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:03:45 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:03:45 2017"
      },
      "message": "[ply] Pretty-print UIDs.\n"
    },
    {
      "commit": "6017651bcf9e47441e0db433f408b962320f8a3a",
      "tree": "c6e81b3227221ed7fa2f44963e2b48d4f9d4f77f",
      "parents": [
        "c5eac844673a1286d8a155305251e2d534cc27e7"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:03:25 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:03:25 2017"
      },
      "message": "[xml] More test cases.\n"
    },
    {
      "commit": "c5eac844673a1286d8a155305251e2d534cc27e7",
      "tree": "8548e52a4b2b4b868efada2233ae9bf185fe75d4",
      "parents": [
        "8506660ce640e5b517abe1cc53c27488d8605292"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 06:53:18 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 07:03:08 2017"
      },
      "message": "[text] Add some more test cases.\n"
    },
    {
      "commit": "8506660ce640e5b517abe1cc53c27488d8605292",
      "tree": "f9bfe8d8bd15695f654447e8afe4d93c10d7d7ad",
      "parents": [
        "f8d376f7fd6472eede2a187d0d3c21b2f820e0d4"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 06:19:37 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 06:19:37 2017"
      },
      "message": "[bplist] Subsume the VariousIllegalBplist test into InvalidBinary\n"
    },
    {
      "commit": "f8d376f7fd6472eede2a187d0d3c21b2f820e0d4",
      "tree": "8e236d8377af1e4715c57b2aeae9bfe5a8dc2aad",
      "parents": [
        "830fbe3a05191301146111cfd3c0d83b3c0d84ab"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 06:09:43 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 21 06:09:43 2017"
      },
      "message": "[bplist] Narrow the invalid bplist test cases.\n"
    },
    {
      "commit": "830fbe3a05191301146111cfd3c0d83b3c0d84ab",
      "tree": "c064e9ec61439d767274fa77e5d813271c2eb39f",
      "parents": [
        "f25b0253bb607829fcfc1c39ba3cebfffe9d452c"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 23:45:23 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 23:45:27 2017"
      },
      "message": "[bplist] Add yet more offset checks\n\nRefs #15.\n"
    },
    {
      "commit": "f25b0253bb607829fcfc1c39ba3cebfffe9d452c",
      "tree": "0610ec7f7a004de42536756e22fbf7f6bd90e7da",
      "parents": [
        "b512d0689adf2336a1755929e5930609fd0f209c"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 23:26:16 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 23:26:16 2017"
      },
      "message": "[travis] Try building with Travis CI.\n"
    },
    {
      "commit": "b512d0689adf2336a1755929e5930609fd0f209c",
      "tree": "c57e00efa51627c88cd075e35302c1d4850b69d4",
      "parents": [
        "429a406cbcaa54ff952cc8c9a77467e29ad2f41f"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 23:21:19 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 23:21:22 2017"
      },
      "message": "[text] Add a bunch of invalid text cases.\n\nRefs #15.\n"
    },
    {
      "commit": "429a406cbcaa54ff952cc8c9a77467e29ad2f41f",
      "tree": "dfcfe602e6937c2392c80bed3631c8506ed9d7bd",
      "parents": [
        "8af31b0f78a744b04d6720935081efb9c1f3bbdb"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 23:18:14 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 23:18:26 2017"
      },
      "message": "[bplist] Add some checks from CoreFoundation; add more tests.\n\nFixes some crashes found via fuzzing; refs #15.\n"
    },
    {
      "commit": "8af31b0f78a744b04d6720935081efb9c1f3bbdb",
      "tree": "5454e3f22c22811ac0e683da112574ff0c6a18f9",
      "parents": [
        "3db3f57329a188611f791d1191c9113dca58bfd6"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:47:36 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:47:36 2017"
      },
      "message": "[test] Reduce test spam.\n"
    },
    {
      "commit": "3db3f57329a188611f791d1191c9113dca58bfd6",
      "tree": "d17373516eedba75a11e0e911756584e6da48b43",
      "parents": [
        "d8661a88fd75112394fa1e1ef3dbb041d8f77665"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:46:14 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:46:45 2017"
      },
      "message": "[xml] Add an invalid integer test.\n"
    },
    {
      "commit": "d8661a88fd75112394fa1e1ef3dbb041d8f77665",
      "tree": "da1c085d669304beaa91ee41d0c12a8abcd1e24c",
      "parents": [
        "221fc98d0abb603ac75d71b08f60a506751d8665"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:45:42 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:46:45 2017"
      },
      "message": "[test] Fix a bad test value.\n"
    },
    {
      "commit": "221fc98d0abb603ac75d71b08f60a506751d8665",
      "tree": "16c4812d42a6585284a9976cf904db98e1ee3559",
      "parents": [
        "e9d7568d0e763b4f3f3215ec94ead126256b289a"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:41:50 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:46:45 2017"
      },
      "message": "Add a custom marshaler/unmarshaler interface.\n\nFixes #13, #17.\nCloses #11.\nRef #3, #21.\n"
    },
    {
      "commit": "e9d7568d0e763b4f3f3215ec94ead126256b289a",
      "tree": "e0c5d2bfd6f7806790fdc2c0846bac1c9da3ccc8",
      "parents": [
        "e789922f1094e02926de4803024aca994afb0b0e"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 20:04:06 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:46:45 2017"
      },
      "message": "Add support for CFKeyedArchiverUIDs.\n\nCloses #5.\n"
    },
    {
      "commit": "e789922f1094e02926de4803024aca994afb0b0e",
      "tree": "7df83bc76490b2eb8d239580ea5266c6acb0d83f",
      "parents": [
        "e7b26b0500be2e5bc0f9a0674ccbfec3cc4f9ade"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Tue Mar 07 08:11:35 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 21:46:45 2017"
      },
      "message": "Replace plistValue+Kind with cfValue and type assertions.\n\nThis commit also:\n* [bplist] Simplifies object tracking in bplist\n* [bplist] Finalizes delayed object deserialization (e575ff4)\n"
    },
    {
      "commit": "e7b26b0500be2e5bc0f9a0674ccbfec3cc4f9ade",
      "tree": "06dedf6f0f4bc6f882e8e7102695f35520d958c7",
      "parents": [
        "adef6cfedecd2ef8762763b0ae917d3e001fb002"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 06 05:33:18 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 20:15:18 2017"
      },
      "message": "[text] Add a little more error handling.\n"
    },
    {
      "commit": "adef6cfedecd2ef8762763b0ae917d3e001fb002",
      "tree": "ac0263ce84af0bbda3373e3197f3e245411e083a",
      "parents": [
        "e575ff4988f48718ed3af5c93ab41c83a77d83e9"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 06 05:33:00 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 20:15:18 2017"
      },
      "message": "[tests] Report more verbosely on decode failures.\n"
    },
    {
      "commit": "e575ff4988f48718ed3af5c93ab41c83a77d83e9",
      "tree": "9c80578d85e19b187eb12a48b50dde0586aa8b4c",
      "parents": [
        "fec78c8d6756fa37981f204f6bf21d909e24fde9"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 06 05:32:18 2017"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 20 20:15:11 2017"
      },
      "message": "[bplist] (partially) delay-parse all bplist objects.\n"
    },
    {
      "commit": "fec78c8d6756fa37981f204f6bf21d909e24fde9",
      "tree": "f34099c73bcd91e4388dd02efafb31b2e06f9005",
      "parents": [
        "8a1851a33411eab7d912b95f707cd8d9fdc2b220"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jul 08 16:58:06 2016"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jul 08 16:58:06 2016"
      },
      "message": "[bplist] It\u0027s likely I should have compiled this before committing.\n"
    },
    {
      "commit": "8a1851a33411eab7d912b95f707cd8d9fdc2b220",
      "tree": "98a695d0a410ec313b6b9e2b4722be1b41a4dfed",
      "parents": [
        "7eeed0b3515891fdfa6e4770b687ff853134697c"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jul 08 16:51:50 2016"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jul 08 16:51:50 2016"
      },
      "message": "[xml] Bail out for empty \u003cinteger/\u003e units.\n"
    },
    {
      "commit": "7eeed0b3515891fdfa6e4770b687ff853134697c",
      "tree": "01840878aee2a61d6223219c692ff0565209d246",
      "parents": [
        "3b5a7a0d909fec4c14f983b56b249578d77113ca"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jul 08 16:50:47 2016"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jul 08 16:50:47 2016"
      },
      "message": "[text] Detect and bail out for some invalid \u003c\u003e units.\n"
    },
    {
      "commit": "3b5a7a0d909fec4c14f983b56b249578d77113ca",
      "tree": "0c06fe18f192e5d746a290c9a2caf9ba4cf6a80c",
      "parents": [
        "a34fbb33e60256707d230f730e60f75946fd2d7c"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jul 08 16:50:17 2016"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jul 08 16:50:17 2016"
      },
      "message": "[bplist] Detect and bail out for more invalid range conditions.\n"
    },
    {
      "commit": "a34fbb33e60256707d230f730e60f75946fd2d7c",
      "tree": "091fad25e942f29e1bb098846f3e2e69d1138203",
      "parents": [
        "acf70ce8de2fd31c664e10ff53860e62a54189f4"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jan 01 01:56:31 2016"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jan 01 01:56:31 2016"
      },
      "message": "[ply] Installation instructions.\n"
    },
    {
      "commit": "acf70ce8de2fd31c664e10ff53860e62a54189f4",
      "tree": "54577be60364d72ea79f7d30e69cea9473ef5475",
      "parents": [
        "dfe154ad4d0ee9c4eb97bcf14f10e40b77f1ec08"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jan 01 01:52:47 2016"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Fri Jan 01 01:52:47 2016"
      },
      "message": "[ply] Prettify the readme and add more examples.\n"
    },
    {
      "commit": "dfe154ad4d0ee9c4eb97bcf14f10e40b77f1ec08",
      "tree": "4c88763f037279d8a696a25276549597cdfe1c97",
      "parents": [
        "7c557344bbc942f5fb63d1d02b1f626862e24612"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Dec 31 20:33:32 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Dec 31 20:33:32 2015"
      },
      "message": "[ply] gop-\u003eply\n"
    },
    {
      "commit": "7c557344bbc942f5fb63d1d02b1f626862e24612",
      "tree": "a94ddbe37614b8b287d81758a05078e5ee2c8c3a",
      "parents": [
        "f105580aeb0f07ee879ba0a92c9b9691a51cbf6a"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Dec 31 09:29:10 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Thu Dec 31 09:52:18 2015"
      },
      "message": "[gop] Initial commit of gop, a plist pretty-printer and translator.\n"
    },
    {
      "commit": "f105580aeb0f07ee879ba0a92c9b9691a51cbf6a",
      "tree": "f949023e8088cd07dc3650b7ebad02401a8c1db9",
      "parents": [
        "234feb646175b86c6fc20678ab154dedb03571ce"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Dec 30 23:50:47 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Dec 30 23:50:47 2015"
      },
      "message": "[tests] Add some invalid bplist tests and an entrypoint for gofuzz.\n"
    },
    {
      "commit": "234feb646175b86c6fc20678ab154dedb03571ce",
      "tree": "896023303a881f75f2f186a6f96a4ccce6542836",
      "parents": [
        "f4bf55d2395500aacc17eedcebc5f139336b4312"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Dec 30 23:48:56 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Dec 30 23:48:57 2015"
      },
      "message": "[bplist] Detect and bail out for various invalid range conditions.\n\nAddresses the crashes found in #15, and a couple more.\n"
    },
    {
      "commit": "f4bf55d2395500aacc17eedcebc5f139336b4312",
      "tree": "bf4caad3230029884d260990214a1785cf662281",
      "parents": [
        "9d4781c3725973c23da5f4d1de1920a188e755d3",
        "7b24ffdf1ffca570c776d6be7e079bc9f7073dee"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Oct 18 05:25:34 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sun Oct 18 05:25:34 2015"
      },
      "message": "Merge pull request #7 from fwal/fix-keyed-init\n\nFixed initialization of xml for AppEngine compability"
    },
    {
      "commit": "9d4781c3725973c23da5f4d1de1920a188e755d3",
      "tree": "c3146e33c4cbdaceb5e3a7284fde5d203721075b",
      "parents": [
        "9146a0c5067f36066b85bf75e330f4d8d14892ad"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 23 21:01:42 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 23 21:01:42 2015"
      },
      "message": "[text] Use Peek so that we can avoid consuming non-comment strings beginning with /. Fixes #12.\n"
    },
    {
      "commit": "9146a0c5067f36066b85bf75e330f4d8d14892ad",
      "tree": "bdcbfa6d7c73efd8cdb2993e9f8f80c6d373e5f0",
      "parents": [
        "f783cf063d71171b28fc75649f46d54ac290eb08"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 23 21:00:58 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Mar 23 21:01:01 2015"
      },
      "message": "[tests] Add a test covering #12 (non-quoted strings beginning with / are mangled.)\n"
    },
    {
      "commit": "f783cf063d71171b28fc75649f46d54ac290eb08",
      "tree": "b3f658bbb96f5e658d0868369013125c6de018fd",
      "parents": [
        "9823ba157566861cfc6cea3a0ce9301599b9770a"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Jan 12 03:11:30 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Jan 12 03:11:31 2015"
      },
      "message": "[xml] Use nil.(*string) to represent a mising key and thereby gain support for empty string keys.\n\nFixes #9.\n"
    },
    {
      "commit": "9823ba157566861cfc6cea3a0ce9301599b9770a",
      "tree": "907b79e1026eee4a6c4e01b07c0e87a8b83dd166",
      "parents": [
        "249e83691eb9f1d0757069e48d3f17b424bf7a60"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Jan 12 03:11:08 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Jan 12 03:11:08 2015"
      },
      "message": "[text] Add support for blank dictionary keys.\n"
    },
    {
      "commit": "249e83691eb9f1d0757069e48d3f17b424bf7a60",
      "tree": "f6069468084efa88e68efaedd52b3d632ae69580",
      "parents": [
        "c61954340689b1debd57cad98f0b5efe8cf75d4a"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Jan 12 03:10:57 2015"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Mon Jan 12 03:10:57 2015"
      },
      "message": "[tests] Add a test for encoding/decoding blank dictionary keys.\n"
    },
    {
      "commit": "7b24ffdf1ffca570c776d6be7e079bc9f7073dee",
      "tree": "edb5d406b8ffd71ab35602318f86577db50eb568",
      "parents": [
        "f2e54fd99b8b17a2427e7307d3458832b823ff93"
      ],
      "author": {
        "name": "Frederik Wallner",
        "email": "frederik.wallner@gmail.com",
        "time": "Tue Oct 07 18:18:57 2014"
      },
      "committer": {
        "name": "Frederik Wallner",
        "email": "frederik.wallner@gmail.com",
        "time": "Tue Oct 07 18:25:12 2014"
      },
      "message": "Keyed initalization for Google AppEngine compability\n"
    },
    {
      "commit": "f2e54fd99b8b17a2427e7307d3458832b823ff93",
      "tree": "a81e887420ef0299505f210514fd38b4bb51f853",
      "parents": [
        "c61954340689b1debd57cad98f0b5efe8cf75d4a"
      ],
      "author": {
        "name": "Frederik Wallner",
        "email": "frederik.wallner@gmail.com",
        "time": "Tue Oct 07 18:18:57 2014"
      },
      "committer": {
        "name": "Frederik Wallner",
        "email": "frederik.wallner@gmail.com",
        "time": "Tue Oct 07 18:18:57 2014"
      },
      "message": "Keyed initalization for Google AppEngine compability\n"
    },
    {
      "commit": "c61954340689b1debd57cad98f0b5efe8cf75d4a",
      "tree": "e840c96efc8b713513f2ccd0aed8198c9d627e5f",
      "parents": [
        "f34a9612831757eb36422d0b911a185ca2e4a1c1"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Feb 19 06:50:34 2014"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Wed Feb 19 06:50:34 2014"
      },
      "message": "[text] Add support for comments.\n"
    },
    {
      "commit": "f34a9612831757eb36422d0b911a185ca2e4a1c1",
      "tree": "56abb0dee888847e998d963d46626434b9558abd",
      "parents": [
        "e4df39600155b5cb991d405d97e18bdaf3dcd980"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 21:44:20 2013"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 21:44:20 2013"
      },
      "message": "[tests] Add format fallback and detection tests.\n"
    },
    {
      "commit": "e4df39600155b5cb991d405d97e18bdaf3dcd980",
      "tree": "4d97fadb89a429031887cff2669c7c2f9fd28f19",
      "parents": [
        "d51152c72b1ca6db8201a98a58aa4a1a60f9ebbf"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 21:43:43 2013"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 21:43:43 2013"
      },
      "message": "[tests] Don\u0027t test format fallback in the Invalid tests.\n"
    },
    {
      "commit": "d51152c72b1ca6db8201a98a58aa4a1a60f9ebbf",
      "tree": "50c222cceb94cca577f393c4e65517584b0678e1",
      "parents": [
        "44e59253ba99b7a5a64eaef494b98e06aee2ae0e"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 12:49:41 2013"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 12:49:41 2013"
      },
      "message": "[tests] Test chan/func encode, fix ShouldFail tests to actually check the right failure case.\n"
    },
    {
      "commit": "44e59253ba99b7a5a64eaef494b98e06aee2ae0e",
      "tree": "9e5f05c753edfddcec9d4e74c8b0fae42101ca87",
      "parents": [
        "8e3677cc4e62d658f8d2fccd30231712d87b07d1"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 12:29:48 2013"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 12:29:48 2013"
      },
      "message": "[tests] Enhance the tests: All four formats, finer-grained decode testing, test everything we possibly can.\n"
    },
    {
      "commit": "8e3677cc4e62d658f8d2fccd30231712d87b07d1",
      "tree": "cf26fa3c7639bf4bad1a922ddbe047e6ab00b5e3",
      "parents": [
        "0fd98ec72c753697cac83dba4ef1ed3f53ffafbd"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 12:14:10 2013"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 12:14:10 2013"
      },
      "message": "[decode] Add mustParseBool and use the mustParse* family for lax decoding.\n"
    },
    {
      "commit": "0fd98ec72c753697cac83dba4ef1ed3f53ffafbd",
      "tree": "51b9145d2f98547126053646ba5b3ee9fe1e1f62",
      "parents": [
        "c657cccd59834cd3ffe1bf26035bcec85e9aad41"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 12:12:29 2013"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 12:12:29 2013"
      },
      "message": "[unmarshal] Allow lax decoding of dates. Never try to TextUnmarshal a time.Time (as this interferes with lax decoding).\n"
    },
    {
      "commit": "c657cccd59834cd3ffe1bf26035bcec85e9aad41",
      "tree": "bdf2b0ef16e3a131c92ac1d0cf07aad0ac7dbcea",
      "parents": [
        "cc822329783386087a9609cd65581bcc9241d107"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 11:27:04 2013"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 11:27:04 2013"
      },
      "message": "To kill boilerplate error handling, add a couple must* convenience functions (Parse{Int,Uint,Float}) and a mustWriter. All panic on error.\n"
    },
    {
      "commit": "cc822329783386087a9609cd65581bcc9241d107",
      "tree": "1aa97b97cf2e6e52809c5d02f3ae1af765baa38d",
      "parents": [
        "ac538baa99e5b433e5322be50782eecdc06a584f"
      ],
      "author": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 10:15:58 2013"
      },
      "committer": {
        "name": "Dustin L. Howett",
        "email": "dustin@howett.net",
        "time": "Sat Dec 14 10:15:58 2013"
      },
      "message": "[tests] Get rid of nilWriter in favour of ioutil.Discard.\n"
    }
  ],
  "next": "ac538baa99e5b433e5322be50782eecdc06a584f"
}
