)]}'
{
  "log": [
    {
      "commit": "965d79f2113ea0ff039d29828a08a616a0223d48",
      "tree": "186a13af8ad625392385f7042096d3b6b84d14d1",
      "parents": [
        "d39ef06364e81c4317c23bc015261a0e51f15305"
      ],
      "author": {
        "name": "aoright",
        "email": "102943475+aoright@users.noreply.github.com",
        "time": "Thu Aug 20 14:47:22 2026 +0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Aug 20 10:11:56 2026 -0700"
      },
      "message": "docs: fix punctuation in doc comments\n\nSigned-off-by: aoright \u003c102943475+aoright@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "d39ef06364e81c4317c23bc015261a0e51f15305",
      "tree": "67dc7dafb8a791d8c5d07f2dda35e921d524232f",
      "parents": [
        "59c17d91d3d41ba66bc4db00b458acc8c3220835"
      ],
      "author": {
        "name": "Charlie Tonneslan",
        "email": "cst0520@gmail.com",
        "time": "Mon Jul 06 12:09:59 2026 -0400"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Jul 06 10:44:27 2026 -0700"
      },
      "message": "query: honor Encoder on interface fields\n\nreflectValue checked sv.Type().Implements(encoderType) against the static\nfield type, so a value stored in an interface{} field never used its\nEncodeValues method and fell back to default formatting. Unwrap the interface\nfirst so the concrete type\u0027s Encoder is seen.\n\nFixes #121\n\nSigned-off-by: Charlie Tonneslan \u003ccst0520@gmail.com\u003e\n"
    },
    {
      "commit": "59c17d91d3d41ba66bc4db00b458acc8c3220835",
      "tree": "db3c0d06526ac824d65461936e83105200996f7a",
      "parents": [
        "b8825f6ec38273c429afdc4726a9a6d667db7451"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Nov 10 13:54:29 2025 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Nov 10 09:18:24 2025 -0800"
      },
      "message": "Bump golangci/golangci-lint-action from 7.0.0 to 9.0.0\n\nBumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 7.0.0 to 9.0.0.\n- [Release notes](https://github.com/golangci/golangci-lint-action/releases)\n- [Commits](https://github.com/golangci/golangci-lint-action/compare/1481404843c368bc19ca9406f87d6e0fc97bdcfd...0a35821d5c230e903fcfe077583637dea1b27b47)\n\n---\nupdated-dependencies:\n- dependency-name: golangci/golangci-lint-action\n  dependency-version: 9.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "b8825f6ec38273c429afdc4726a9a6d667db7451",
      "tree": "4af568c9b3dfe47bf7b8de09ab27e16f4a938bd6",
      "parents": [
        "243d79a82e17c2675931460a1aced8b8eba7661a"
      ],
      "author": {
        "name": "Oleksandr Redko",
        "email": "oleksandr.red+github@gmail.com",
        "time": "Fri Jun 06 13:36:34 2025 +0300"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Jun 23 06:07:49 2025 -0700"
      },
      "message": "go.mod,.github: Go 1.13 is the minimum version\n"
    },
    {
      "commit": "243d79a82e17c2675931460a1aced8b8eba7661a",
      "tree": "7cdeae23c2104a3aae72b13e7c4d00a0721f4c3b",
      "parents": [
        "b64aef052fb707c6af8852bd29e4091ff3472b6d"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@tailscale.com",
        "time": "Thu Apr 24 07:22:41 2025 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 24 08:05:51 2025 -0700"
      },
      "message": "update github action workflow versions\n\n- pin to exact commits rather than version tags\n- format a few yaml files with prettier\n- update golangci-lint config for v2 syntax\n"
    },
    {
      "commit": "b64aef052fb707c6af8852bd29e4091ff3472b6d",
      "tree": "f80f9ab82ef2465cafd8dd4caa0618269b00180d",
      "parents": [
        "ffb7deb887d74c2c4d3fb185e65955a0e937fa89"
      ],
      "author": {
        "name": "14March",
        "email": "53811984+hcraM41@users.noreply.github.com",
        "time": "Thu Apr 24 16:00:04 2025 +0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 24 06:54:54 2025 -0700"
      },
      "message": "code opt: replace bytes.Buffer with strings.Builder\n"
    },
    {
      "commit": "ffb7deb887d74c2c4d3fb185e65955a0e937fa89",
      "tree": "e9c19c21d9b317b9678ea232af963e1333ea614b",
      "parents": [
        "085cc7882e69d266a8d5683a062957aa5046aa2c"
      ],
      "author": {
        "name": "14March",
        "email": "53811984+hcraM41@users.noreply.github.com",
        "time": "Thu Apr 24 10:07:53 2025 +0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Apr 23 19:26:20 2025 -0700"
      },
      "message": "code opt: prioritize handling boundary conditions\n"
    },
    {
      "commit": "085cc7882e69d266a8d5683a062957aa5046aa2c",
      "tree": "7bce8703ec3af41175417471eb9661d05e662ee1",
      "parents": [
        "d887f3761db5a6239678317f32afdcaa069e5a7b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed May 08 13:47:53 2024 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed May 08 20:13:29 2024 -0700"
      },
      "message": "Bump golangci/golangci-lint-action from 5.0.0 to 6.0.1\n\nBumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 5.0.0 to 6.0.1.\n- [Release notes](https://github.com/golangci/golangci-lint-action/releases)\n- [Commits](https://github.com/golangci/golangci-lint-action/compare/82d40c283aeb1f2b6595839195e95c2d6a49081b...a4f60bb28d35aeee14e6880718e0c85ff1882e64)\n\n---\nupdated-dependencies:\n- dependency-name: golangci/golangci-lint-action\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d887f3761db5a6239678317f32afdcaa069e5a7b",
      "tree": "efe883c36a522630aafb572427e968d3f4afa165",
      "parents": [
        "d6a1024d386f274c27b1d6116c856a02abba11d8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 25 13:57:50 2024 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 25 08:56:53 2024 -0700"
      },
      "message": "Bump golangci/golangci-lint-action from 4.0.0 to 5.0.0\n\nBumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 4.0.0 to 5.0.0.\n- [Release notes](https://github.com/golangci/golangci-lint-action/releases)\n- [Commits](https://github.com/golangci/golangci-lint-action/compare/3cfe3a4abbb849e10058ce4af15d205b6da42804...82d40c283aeb1f2b6595839195e95c2d6a49081b)\n\n---\nupdated-dependencies:\n- dependency-name: golangci/golangci-lint-action\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d6a1024d386f274c27b1d6116c856a02abba11d8",
      "tree": "97835539ac4ac4f95dc68025eb4c357ec50a507d",
      "parents": [
        "7af347edbb9773d18095738a7eae8b20f09174ec"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 04 13:48:31 2023 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Mar 07 12:19:14 2024 -0800"
      },
      "message": "go.mod,.github: update dependencies\n\nThis merges together all of the various PRs opened by dependabot.\n\nSigned-off-by: Will Norris \u003cwill@tailscale.com\u003e\n"
    },
    {
      "commit": "7af347edbb9773d18095738a7eae8b20f09174ec",
      "tree": "36927e76862f27723d753800115f3066652305ea",
      "parents": [
        "3455b5313413da74e4b65662d161dde73d961cdd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jan 26 13:43:39 2024 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Jan 26 07:18:20 2024 -0800"
      },
      "message": "Bump codecov/codecov-action from 3.1.4 to 3.1.5\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.4 to 3.1.5.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/eaaf4bedf32dbdc6b720b63067d99c4d77d6047d...4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "3455b5313413da74e4b65662d161dde73d961cdd",
      "tree": "a6ad03eb889cabde5ac6c898c2de32335137970d",
      "parents": [
        "6ab76b241e939fd603e0d777c753517ce6d1739b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue May 16 13:58:15 2023 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue May 16 08:20:57 2023 -0700"
      },
      "message": "Bump codecov/codecov-action from 3.1.3 to 3.1.4\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.3 to 3.1.4.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/894ff025c7b54547a9a2a1e9f228beae737ad3c2...eaaf4bedf32dbdc6b720b63067d99c4d77d6047d)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "6ab76b241e939fd603e0d777c753517ce6d1739b",
      "tree": "74d8bb0b84726b98fd9262d86661d31377e9bb5d",
      "parents": [
        "1e2d512544ca49d4175376caf612eb892961df99"
      ],
      "author": {
        "name": "Ggicci",
        "email": "ggicci.t@gmail.com",
        "time": "Sun Mar 06 20:31:41 2022 +0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 04 09:36:13 2023 -0700"
      },
      "message": "recommend an alternative package httpin\n"
    },
    {
      "commit": "1e2d512544ca49d4175376caf612eb892961df99",
      "tree": "5f3687ef1cccade516a276ed81ac4855c65dda2b",
      "parents": [
        "9131c9e1853763286a825abb836a79137c76615f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu May 04 15:44:40 2023 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 04 08:49:45 2023 -0700"
      },
      "message": "Bump github.com/google/go-cmp from 0.5.6 to 0.5.9\n\nBumps [github.com/google/go-cmp](https://github.com/google/go-cmp) from 0.5.6 to 0.5.9.\n- [Release notes](https://github.com/google/go-cmp/releases)\n- [Commits](https://github.com/google/go-cmp/compare/v0.5.6...v0.5.9)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/google/go-cmp\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "9131c9e1853763286a825abb836a79137c76615f",
      "tree": "ac68bba019962acc36561dd2231a7a47d83cdb5e",
      "parents": [
        "71a97b19ea3f651063634461d53902d5b4327a92"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@tailscale.com",
        "time": "Thu May 04 08:28:42 2023 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 04 08:39:40 2023 -0700"
      },
      "message": ".github: update workflow actions\n\nUpdate the various GitHub actions we\u0027re using like setup-go, which no\nlonger needs the cache action, and supports the new \u0027stable\u0027 and\n\u0027oldstable\u0027 go versions.  Also switch to new concurrency config, which\nremoves the need for styfle/cancel-workflow-action.\n"
    },
    {
      "commit": "71a97b19ea3f651063634461d53902d5b4327a92",
      "tree": "ad622d61d515b8e82183bab2201128a84d3ad0de",
      "parents": [
        "934da1706275a38ef4d8647320f723db0c208595"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@tailscale.com",
        "time": "Thu May 04 08:21:35 2023 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 04 08:39:40 2023 -0700"
      },
      "message": "gofmt all files\n"
    },
    {
      "commit": "934da1706275a38ef4d8647320f723db0c208595",
      "tree": "a608e011f71aed0cabb954b540c87be1d4c1da7d",
      "parents": [
        "b6e79f1232c697d589dde6da2dd13b4de75b8af9"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Dec 02 09:15:58 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Dec 02 09:15:58 2021 -0800"
      },
      "message": "better handling of empty values in slices/arrays\n\nif the slice or array has no values, skip it entirely.  This fixes\nan issue where a struct field with a custom delimiter was included in\nthe returned url.Values with an empty string rather than being omitted\nentirely (as is the case when there is no custom delimiter)\n\nfixes #57\n"
    },
    {
      "commit": "b6e79f1232c697d589dde6da2dd13b4de75b8af9",
      "tree": "3b6c9a0ae13ac96415c5003713671266522234af",
      "parents": [
        "9392084f0fd11c8727f6c6710d2b73661c9be4c7"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Dec 02 09:03:21 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Dec 02 09:03:21 2021 -0800"
      },
      "message": "docs: clarify behavior of nested structs\n\nrelates to #62\n"
    },
    {
      "commit": "9392084f0fd11c8727f6c6710d2b73661c9be4c7",
      "tree": "ae8fbac505c59f55009d3f3f931484983b0ab48a",
      "parents": [
        "ca42dd88cb30cbc6f8f16315588a97d53116a304"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 13 10:04:22 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 13 10:04:22 2021 -0700"
      },
      "message": "Bump styfle/cancel-workflow-action from 0.9.0 to 0.9.1 (#56)\n\n* Bump styfle/cancel-workflow-action from 0.9.0 to 0.9.1\r\n\r\nBumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.9.0 to 0.9.1.\r\n- [Release notes](https://github.com/styfle/cancel-workflow-action/releases)\r\n- [Commits](https://github.com/styfle/cancel-workflow-action/compare/89f242ee29e10c53a841bfe71cc0ce7b2f065abc...a40b8845c0683271d9f53dfcb887a7e181d3918b)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: styfle/cancel-workflow-action\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-patch\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\n* Update .github/workflows/tests.yml\r\n\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ca42dd88cb30cbc6f8f16315588a97d53116a304",
      "tree": "8f69142a2a12ca2766cc5a347b97e0d56aeb3e0b",
      "parents": [
        "f76b16e611e840d52c50bd66dabeef5fe3b5e74d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 13 10:02:54 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 13 10:02:54 2021 -0700"
      },
      "message": "Bump codecov/codecov-action from 2.0.1 to 2.1.0 (#59)\n\n* Bump codecov/codecov-action from 2.0.1 to 2.1.0\r\n\r\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 2.0.1 to 2.1.0.\r\n- [Release notes](https://github.com/codecov/codecov-action/releases)\r\n- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/codecov/codecov-action/compare/v2.0.1...v2.1.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: codecov/codecov-action\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-minor\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\n* Update .github/workflows/tests.yml\r\n\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f76b16e611e840d52c50bd66dabeef5fe3b5e74d",
      "tree": "ee21fa5013c26482ac41872f81c8e01c0df24eea",
      "parents": [
        "e2723fd77966956647cf8af3573ed8bbe467b3b6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 21 13:50:29 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 21 13:50:29 2021 -0700"
      },
      "message": "Bump codecov/codecov-action from 1 to 2.0.1 (#51)\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 1 to 2.0.1.\r\n- [Release notes](https://github.com/codecov/codecov-action/releases)\r\n- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/codecov/codecov-action/compare/v1...v2.0.1)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: codecov/codecov-action\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-major\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e2723fd77966956647cf8af3573ed8bbe467b3b6",
      "tree": "92d7ca2fce57a46ee5f63c2b83fcf2e5a5064c08",
      "parents": [
        "e0f76a524f0ec3f7e3f9f4f2d827083cccdfb440"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 21 13:50:02 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 21 13:50:02 2021 -0700"
      },
      "message": "Bump github.com/google/go-cmp from 0.5.2 to 0.5.6 (#52)\n\nBumps [github.com/google/go-cmp](https://github.com/google/go-cmp) from 0.5.2 to 0.5.6.\r\n- [Release notes](https://github.com/google/go-cmp/releases)\r\n- [Commits](https://github.com/google/go-cmp/compare/v0.5.2...v0.5.6)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: github.com/google/go-cmp\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-patch\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e0f76a524f0ec3f7e3f9f4f2d827083cccdfb440",
      "tree": "f2221dc6ebb30f91b9ec63cb4b3dbb48b8959bff",
      "parents": [
        "af7d77dde9d9ac442c24acf94718d9f5114b5fe9"
      ],
      "author": {
        "name": "Matthieu MOREL",
        "email": "mmorel-35@users.noreply.github.com",
        "time": "Wed Jul 21 22:48:10 2021 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 21 13:48:10 2021 -0700"
      },
      "message": "Set up dependabot for gomod and github-actions, Update golangci to v1.41 (#50)\n\n"
    },
    {
      "commit": "af7d77dde9d9ac442c24acf94718d9f5114b5fe9",
      "tree": "31353cd5330b9fc5c4e041b1810f6aca80a8bf6d",
      "parents": [
        "1f4a1f9d6e29d314b2513651973fca5c4d4498f1"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 15 07:20:43 2021 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 15 07:20:43 2021 -0700"
      },
      "message": "pin cancel-workflow-action to specific SHA\n"
    },
    {
      "commit": "1f4a1f9d6e29d314b2513651973fca5c4d4498f1",
      "tree": "6a52d665ec505e7cc641793edc064dfdf86e65b7",
      "parents": [
        "6c9448afb101fc8db2e49bfbf96f180ccef6aa4e"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Mar 10 14:41:24 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Mar 10 14:41:24 2021 -0800"
      },
      "message": "cleanup github actions config\n\n- cancel previous workflow runs\n- limit actions to changes on master branch\n- update actions/cache config\n- only upload code coverage status once\n"
    },
    {
      "commit": "6c9448afb101fc8db2e49bfbf96f180ccef6aa4e",
      "tree": "3eec43632debdb342e0c5fa210ccbd1da435c4b0",
      "parents": [
        "c16bb7bfc6551c289c2bdac085d94b1f5ddb5add"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 01 09:01:55 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 01 09:03:41 2021 -0800"
      },
      "message": "remove comment about undesirable test values\n"
    },
    {
      "commit": "c16bb7bfc6551c289c2bdac085d94b1f5ddb5add",
      "tree": "6d20827bc46313a5815ed80fe79710ff91458ad0",
      "parents": [
        "5014110ddb7722800ef3c05922b78910d1375c20"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 14:51:54 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 14:51:54 2021 -0800"
      },
      "message": "use go reference badge from pkg.go.dev\n"
    },
    {
      "commit": "5014110ddb7722800ef3c05922b78910d1375c20",
      "tree": "77eacd2e571d2fec55d6202cb25d47252cf95c71",
      "parents": [
        "e9ef1ee629c6d9a07b0b4231e90da6cb8b7e2693"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 14:42:49 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 14:42:49 2021 -0800"
      },
      "message": "add tests for embedded struct pointer\n\nRefs #40\n"
    },
    {
      "commit": "e9ef1ee629c6d9a07b0b4231e90da6cb8b7e2693",
      "tree": "4955f6c47262b46b6cafe429faf6e76c1314f6a5",
      "parents": [
        "dd8162071090c2e4dfab2646c770114700b35df6"
      ],
      "author": {
        "name": "Anthony Pratti",
        "email": "apratti@twitter.com",
        "time": "Sat Aug 22 03:07:42 2020 -0400"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 14:42:13 2021 -0800"
      },
      "message": "Allow embedded pointers to structs\n"
    },
    {
      "commit": "dd8162071090c2e4dfab2646c770114700b35df6",
      "tree": "072cdfddc882eb9fa16235f66d0133324f100f99",
      "parents": [
        "05266dc9685ccdaeea07051601ef2d5b229a7382"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 14:01:25 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 14:01:25 2021 -0800"
      },
      "message": "allow specifying a custom layout for time values\n\nFixes #17\n"
    },
    {
      "commit": "05266dc9685ccdaeea07051601ef2d5b229a7382",
      "tree": "f914d1f450f8d09e1daac3a8c91866a706c54607",
      "parents": [
        "597fdbe7861abe7ce93b0cd9d6553b4703632f49"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 13:38:16 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 13:38:16 2021 -0800"
      },
      "message": "allow custom encoders to handle nil pointers\n\nIf a custom encoder is defined on a pointer of a type, allow that\nencoder to handle nil values.  Encoders defined on non-pointer types\nwill continue to be given the zero value of the type to encode (the\nexisting behavior).\n\nFixes #46\n"
    },
    {
      "commit": "597fdbe7861abe7ce93b0cd9d6553b4703632f49",
      "tree": "ff208514f56687c54cd7833e497e330ddceaec16",
      "parents": [
        "cf94fa1ae4ce5dfe76cebc38400bccaaa6508222"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 13:22:18 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 13:22:18 2021 -0800"
      },
      "message": "add more tests for custom encoder implementations\n\nmany of these values are not actually what we want, but allows us to see\nthe change in behavior in a future change.\n\nRelated to #46\n"
    },
    {
      "commit": "cf94fa1ae4ce5dfe76cebc38400bccaaa6508222",
      "tree": "7f1f54a1fce903a60b638bd46e3770a99c04b9f4",
      "parents": [
        "9308ba2d8231e1524fcb51f35dd013912516d5e6"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Feb 23 16:56:06 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Feb 23 16:56:06 2021 -0800"
      },
      "message": "fix typo: delimiters\n"
    },
    {
      "commit": "9308ba2d8231e1524fcb51f35dd013912516d5e6",
      "tree": "daef0d4dbeba49cdccc2aa846b2c7e108c3bd1fe",
      "parents": [
        "faa69f46eca0a09bb9bbcfcf2c4fceed21953c06"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Feb 23 16:54:55 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Feb 23 16:54:55 2021 -0800"
      },
      "message": "fix whitespace in godoc\n"
    },
    {
      "commit": "faa69f46eca0a09bb9bbcfcf2c4fceed21953c06",
      "tree": "dd5db0fe21337c3bda3df3314c3b8a2428e63c8e",
      "parents": [
        "2c9db428f239fa49f8f98b7dfdf0c3a50394ecdb"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Feb 23 16:53:27 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Feb 23 16:53:27 2021 -0800"
      },
      "message": "allow custom delimiter for slices and arrays\n\nFixes #32\n"
    },
    {
      "commit": "2c9db428f239fa49f8f98b7dfdf0c3a50394ecdb",
      "tree": "42138bf17a674fdd408b9f25bf20d7632df72461",
      "parents": [
        "55faf79c297ffe9e26d034acafd0c9f614ad9da9"
      ],
      "author": {
        "name": "Ed Anderson",
        "email": "ed.anderson@outreach.io",
        "time": "Mon Feb 01 16:21:51 2021 -0800"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Feb 23 15:39:00 2021 -0800"
      },
      "message": "Added support for unix nano and milliseconds\n\nfixes #44\n"
    },
    {
      "commit": "55faf79c297ffe9e26d034acafd0c9f614ad9da9",
      "tree": "61c5d6f52dd6fe64e070b95de41d557bdace0074",
      "parents": [
        "9905ddd405a53718d770d734d51b36a54e74bdd4"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 19:48:42 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 19:48:42 2020 -0700"
      },
      "message": "add alternatives to README\n\nalso remove license section from README, since the LICENSE file is\nalways authoritative\n"
    },
    {
      "commit": "9905ddd405a53718d770d734d51b36a54e74bdd4",
      "tree": "a545fbe5e82e9fce9f1a52c19f8d06db6b906c27",
      "parents": [
        "50c87b20ce05d5c5d4d995f2ef8d79d9c75b81ff"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 19:19:32 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 19:19:32 2020 -0700"
      },
      "message": "support empty value for any type with IsZero() method\n"
    },
    {
      "commit": "50c87b20ce05d5c5d4d995f2ef8d79d9c75b81ff",
      "tree": "b748fbc59b188e7dc9ec655eb42b8ff84b04dcb8",
      "parents": [
        "1d3f6751068bb752232fc8fbf4ad3467c84bc869"
      ],
      "author": {
        "name": "Peter Bouwdewijn",
        "email": "peter.bouwdewijn@gmail.com",
        "time": "Tue Oct 27 03:07:46 2020 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 19:07:46 2020 -0700"
      },
      "message": "Fix encoding non-nil pointers by their by using their actual value (#42)\n\nAs described in issue #26 if we unwrap the value of the pointer prior to the slice/array logic this should work. It is placed under the omitempty check, since this would be backwards breaking."
    },
    {
      "commit": "1d3f6751068bb752232fc8fbf4ad3467c84bc869",
      "tree": "15414680814442cdde1efd241d6ec34f332b893f",
      "parents": [
        "04f87c93a06ffd78e334757377a4213cbc3f4c69"
      ],
      "author": {
        "name": "Karsten Gresch",
        "email": "karstengresch@users.noreply.github.com",
        "time": "Tue Oct 27 02:48:30 2020 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 18:48:30 2020 -0700"
      },
      "message": "Missing \u0027a\u0027 (#20)\n\n"
    },
    {
      "commit": "04f87c93a06ffd78e334757377a4213cbc3f4c69",
      "tree": "38114541ff756ad663a93ea8be3528f617c23588",
      "parents": [
        "afd52ea401b1b612ac2e8be6e8d187acc109b5ae"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:34:05 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:34:05 2020 -0700"
      },
      "message": "refactor remaining tests for readability\n"
    },
    {
      "commit": "afd52ea401b1b612ac2e8be6e8d187acc109b5ae",
      "tree": "55e05afeb29775ca1a84abc2d6544f88ccca6b1b",
      "parents": [
        "1edf4fbc6055531c4e29476ba3e344a0e48a7375"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 13:46:43 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 13:46:43 2020 -0700"
      },
      "message": "re-add test case for slices of pointer values\n"
    },
    {
      "commit": "1edf4fbc6055531c4e29476ba3e344a0e48a7375",
      "tree": "b69482d3028f8c95b0b4c17f34f4c60660077b17",
      "parents": [
        "e5b6f122d32fb2e7f9e3672c8991e636156d28bd"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 13:18:05 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 13:33:43 2020 -0700"
      },
      "message": "refactor tests to make them more readable\n\nthis splits TestValues_types into multiple test functions focused on\ndifferent types of values.  Also, instead of testing multiples types at\na time by having a single large struct with lots of different fields,\nthis switches to testing lots of small structs with a single field.\nThis does result in longer code in some cases (specifically slices and\narrays, which tend to span multiple lines), but it makes the individual\ncases much easier to read, since the input and expected output are\ndirectly next to each other.\n\nMore cleanup to come; this just focused on the TestValues_types func.\n"
    },
    {
      "commit": "e5b6f122d32fb2e7f9e3672c8991e636156d28bd",
      "tree": "d814ef83f6ba652d3439f933c66926236cb348da",
      "parents": [
        "e157c8a4db3220d6811c72887e692d8ac1c5793f"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 11:24:04 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 11:24:04 2020 -0700"
      },
      "message": "run golangci-lint as GitHub Action\n"
    },
    {
      "commit": "e157c8a4db3220d6811c72887e692d8ac1c5793f",
      "tree": "f0ce4f2d29deded44cd672ab0891e4a56ac250f3",
      "parents": [
        "15305558fcc1a50f48ccac2c004cb1e03db58592"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 11:22:01 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 11:22:01 2020 -0700"
      },
      "message": "check error returned from reflectValue\n"
    },
    {
      "commit": "15305558fcc1a50f48ccac2c004cb1e03db58592",
      "tree": "e0eae3f0ad4826d1619468d196675396d647422f",
      "parents": [
        "fc903d29e12075805358adf678c9636f80c50e9f"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 11:02:00 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 11:02:00 2020 -0700"
      },
      "message": "add isEmptyValue test for unknown type\n"
    },
    {
      "commit": "fc903d29e12075805358adf678c9636f80c50e9f",
      "tree": "f2b17362b182bddb0df4768fb654305148dbc7e4",
      "parents": [
        "286e09a3bdadbb8bf0c0a39a2e3a1fe840b9a6b0"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 10:55:34 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 10:55:34 2020 -0700"
      },
      "message": "add minimum version in go.mod file\n\ngo 1.10 is really just a guess.  We\u0027re not doing anything special in\nthis package, and we could probably support much earlier versions, but\nthis seems sufficient.\n"
    },
    {
      "commit": "286e09a3bdadbb8bf0c0a39a2e3a1fe840b9a6b0",
      "tree": "0701db9e5ef31d5cafd52a7e48bb965688024c41",
      "parents": [
        "a9f42ff32ed4b755ad27791ab6992d22518070f2"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 10:53:41 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 10:53:41 2020 -0700"
      },
      "message": "add tests for isEmptyValue\n"
    },
    {
      "commit": "a9f42ff32ed4b755ad27791ab6992d22518070f2",
      "tree": "934748ef579d8b444c2333aae4afdd132501a8c6",
      "parents": [
        "3a21a47a95db0636199455e5aec10ba62b30745e"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 10:08:24 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 10:08:24 2020 -0700"
      },
      "message": "add test coverage badge\n"
    },
    {
      "commit": "3a21a47a95db0636199455e5aec10ba62b30745e",
      "tree": "3d994757f248211d9a609685607827a2be13ecd5",
      "parents": [
        "c8c88dbee036db4e4808d1f2ec8c2e15e11c3f80"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 10:00:46 2020 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 10:00:46 2020 -0700"
      },
      "message": "switch from travis to GitHub Actions\n"
    },
    {
      "commit": "c8c88dbee036db4e4808d1f2ec8c2e15e11c3f80",
      "tree": "ae97b2ef70bac4645168bdc97a92f10300763789",
      "parents": [
        "13ff458984ea583806ab2c2c55cd8e7fd266f139"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:54:38 2019 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:54:38 2019 +0000"
      },
      "message": "travis: don\u0027t bother running on go master\n"
    },
    {
      "commit": "13ff458984ea583806ab2c2c55cd8e7fd266f139",
      "tree": "f7337a7f37458668fec8ebc263585917caf69802",
      "parents": [
        "023a8394f9e6d0d52733a810a4a0b3d3914faac3"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:47:22 2019 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:47:22 2019 +0000"
      },
      "message": "properly put .travis.yml in root directory\n"
    },
    {
      "commit": "023a8394f9e6d0d52733a810a4a0b3d3914faac3",
      "tree": "9b72944d8b56dd07d5c5190d292a937226d0e34e",
      "parents": [
        "9c8b890f5e8d502679c72711728cfebcf4a3cf4f"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:44:51 2019 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:44:51 2019 +0000"
      },
      "message": "readme: update badges\n\n- switch from drone to travis for CI\n- move badges inline under the title\n"
    },
    {
      "commit": "9c8b890f5e8d502679c72711728cfebcf4a3cf4f",
      "tree": "1c0270af73bbcea5c9dcf4f7ccd141d0949f4a52",
      "parents": [
        "992e8021cf787c100d55520d5c906e01536c0a19"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:43:30 2019 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:43:30 2019 +0000"
      },
      "message": "add minimal travis configuration\n"
    },
    {
      "commit": "992e8021cf787c100d55520d5c906e01536c0a19",
      "tree": "902e049622d8faa21d141b6f9fc2750aa3c8eadd",
      "parents": [
        "44c6ddd0a2342c386950e880b658017258da92fc"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:40:10 2019 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:40:10 2019 +0000"
      },
      "message": "use proper \u0027%v\u0027 format for logging structs\n"
    },
    {
      "commit": "44c6ddd0a2342c386950e880b658017258da92fc",
      "tree": "8119052e229f0583375c5ac7bf4fbbe702c8d062",
      "parents": [
        "53e6ce116135b80d037921a7fdd5138cf32d7a8a"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Sun Sep 16 13:16:37 2018 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Sun Sep 16 13:16:37 2018 +0000"
      },
      "message": "add go.mod file to identify as a module\n"
    },
    {
      "commit": "53e6ce116135b80d037921a7fdd5138cf32d7a8a",
      "tree": "dbb22aa9b3ff7f1591038e29ed9fd4b2553908b1",
      "parents": [
        "9235644dd9e52eeae6fa48efd539fdc351a0af53"
      ],
      "author": {
        "name": "micanzhang",
        "email": "micanzhang@gmail.com",
        "time": "Wed Jan 11 18:11:55 2017 +0800"
      },
      "committer": {
        "name": "micanzhang",
        "email": "micanzhang@gmail.com",
        "time": "Wed Jan 11 18:11:55 2017 +0800"
      },
      "message": "fix pointer to time.Time\n"
    },
    {
      "commit": "9235644dd9e52eeae6fa48efd539fdc351a0af53",
      "tree": "2e7a9905aede186ced1b5271d522988866113ff6",
      "parents": [
        "6bb77fe6f42b85397288d4f6f67ac72f8f400ee7"
      ],
      "author": {
        "name": "Chris Marchesi",
        "email": "cmarchesi@paybyphone.com",
        "time": "Thu Mar 10 17:20:12 2016 -0800"
      },
      "committer": {
        "name": "Chris Marchesi",
        "email": "cmarchesi@paybyphone.com",
        "time": "Fri Apr 01 16:30:42 2016 -0700"
      },
      "message": "New array handling options (semicolon, numbered)\n\n * New \"semicolon\" option changes array delimiters to be semicolons.\n * New \"numbered\" option changes array output to be numbered, ie:\n   given a array-style type of \"var\", output will look like\n   name0\u003dvalue0\u0026name1\u003dvalue1, etc.\n"
    },
    {
      "commit": "6bb77fe6f42b85397288d4f6f67ac72f8f400ee7",
      "tree": "2d62408025a3e253065e69c612e8ff596c158c8b",
      "parents": [
        "4ef331387c8bca09bd05f9172ea301583a939546"
      ],
      "author": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Wed Feb 17 19:51:18 2016 -0500"
      },
      "committer": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Wed Feb 17 19:51:18 2016 -0500"
      },
      "message": "Now checking if a field is not anonymous before\nskipping it when walking over values in an struct, to make sure that we\ndon\u0027t skip validly accessible (exported) embedded values in an\nunexported field.\n\nThis new checking logic is the new recommended strategy for reflective\nstruct walking as of the Go 1.6 release.\n\nRelated/References:\n\n- Go 1.6 reflect release note: https://golang.org/doc/go1.6#reflect\n- Issue: https://golang.org/issue/12367\n    (https://github.com/golang/go/issues/12367)\n- CL: https://golang.org/cl/14085\n    (https://go-review.googlesource.com/#/c/14085/)\n- Commit: https://github.com/golang/go/commit/afe9837b23f889c59144d90ce3ae87d32aee59fe\n"
    },
    {
      "commit": "4ef331387c8bca09bd05f9172ea301583a939546",
      "tree": "28aca184211b97344406413e8a6ad8744bad9172",
      "parents": [
        "2a60fc2ba6c19de80291203597d752e9ba58e4c0"
      ],
      "author": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Wed Feb 17 19:50:36 2016 -0500"
      },
      "committer": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Wed Feb 17 19:50:36 2016 -0500"
      },
      "message": "Updating tests for the expected behavior\n"
    },
    {
      "commit": "2a60fc2ba6c19de80291203597d752e9ba58e4c0",
      "tree": "0d6446cc6698e0b8d0213016471e01f8117cf2e3",
      "parents": [
        "547ef5ac979778feb2f760cdb5f4eae1a2207b86"
      ],
      "author": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Wed Oct 28 14:53:53 2015 -0400"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Oct 28 14:10:38 2015 -0700"
      },
      "message": "Fix invalid call to value method with nil pointer\n\nNow checking if a reflected value is invalid and, if so, making sure to\ninitialize the reflected value with the type\u0027s expected zero-value\nbefore attempting to call the interface method.\n\nThis prevents panics due to invocation through reflection, such as:\n\"value method query.EncodedArgs.EncodeValues called using nil\n*EncodedArgs pointer\"\n\nFixes #9\n"
    },
    {
      "commit": "547ef5ac979778feb2f760cdb5f4eae1a2207b86",
      "tree": "bfd79ead1253e67c38f4198ff63619ce1fad6c81",
      "parents": [
        "d8840cbb2baa915f4836edda4750050a2c0b7aea"
      ],
      "author": {
        "name": "Ernesto Jiménez",
        "email": "me@ernesto-jimenez.com",
        "time": "Sun Nov 09 01:42:17 2014 +0000"
      },
      "committer": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Apr 14 14:48:48 2015 -0700"
      },
      "message": "Better support for array and struct serialization\n\nThis patch allows better encoding of nested structs and arrays to follow\n[conventions followed by frameworks like Rails][1] when parsing query\nstrings such as ```ids[]\u003d1\u0026ids[]\u003d2\u0026ids[]\u003d3``` for arrays and\n```user[name]\u003dacme\u0026user[addr][postcode]\u003d1234\u0026user[addr][city]\u003dSFO``` for\nhashes.\n\nChanges:\n\n * Encode nested attributes: ```Parameter.Nested.Value \u003d \"str\"``` would\n be encoded as ```parameter[nested][value]\u003dstr```\n * New ```brackets``` tag option for arrays so that in stead of encoding\n an array as ```a\u003done\u0026a\u003dtwo``` it\u0027s encoded as ```a[]\u003done\u0026a[]\u003dtwo```\n which are read\n\n[1]: http://guides.rubyonrails.org/action_controller_overview.html#hash-and-array-parameters\n"
    },
    {
      "commit": "d8840cbb2baa915f4836edda4750050a2c0b7aea",
      "tree": "768748f5a21681dcec564eabf66ae1a1bc61f1fd",
      "parents": [
        "30f7a39f4a218feb5325f3aebc60c32a572a8274"
      ],
      "author": {
        "name": "Dave Johnston",
        "email": "johnsto@gmail.com",
        "time": "Sat Sep 06 09:41:35 2014 +0100"
      },
      "committer": {
        "name": "Dave Johnston",
        "email": "johnsto@gmail.com",
        "time": "Sat Sep 06 09:41:35 2014 +0100"
      },
      "message": "Add parameter key to EncodeValues\n"
    },
    {
      "commit": "30f7a39f4a218feb5325f3aebc60c32a572a8274",
      "tree": "5653964f3694bb8f16cc128456d2eb65513f7c34",
      "parents": [
        "ec0a78e0f4db229b7897be36596a8944230b857a"
      ],
      "author": {
        "name": "Dave Johnston",
        "email": "dave@fireteam.net",
        "time": "Mon Aug 04 07:26:24 2014 +0100"
      },
      "committer": {
        "name": "Dave Johnston",
        "email": "dave@fireteam.net",
        "time": "Mon Aug 04 07:26:24 2014 +0100"
      },
      "message": "Add `Encoder` type for custom encoding of values\n"
    },
    {
      "commit": "ec0a78e0f4db229b7897be36596a8944230b857a",
      "tree": "c6d474d7fdde54e5faf0e1fce40f9b6cbc798b57",
      "parents": [
        "b61dfd1700df87f7d4f354561847b87e52335aa6"
      ],
      "author": {
        "name": "Quinn Slack",
        "email": "sqs@sourcegraph.com",
        "time": "Sat Sep 14 00:35:20 2013 -0700"
      },
      "committer": {
        "name": "Quinn Slack",
        "email": "sqs@sourcegraph.com",
        "time": "Sat Sep 14 00:35:20 2013 -0700"
      },
      "message": "Fix reference: Values, not Value"
    },
    {
      "commit": "b61dfd1700df87f7d4f354561847b87e52335aa6",
      "tree": "bcae2dcea78885384a8784863c77c3ea8ce2a2ef",
      "parents": [
        "9f402b68fdca9e2782f8a3dff38f1aa9445e3c02"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 14:48:01 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 14:48:01 2013 -0700"
      },
      "message": "fill out README a bit more\n"
    },
    {
      "commit": "9f402b68fdca9e2782f8a3dff38f1aa9445e3c02",
      "tree": "a0b010c0cc6c94bf56c1e51a062520f21f7fa233",
      "parents": [
        "30fd897b5dcf3d50ee4d340370320a55805615f5"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 12:56:53 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 12:56:53 2013 -0700"
      },
      "message": "add README and CONTRIBUTING files\n"
    },
    {
      "commit": "30fd897b5dcf3d50ee4d340370320a55805615f5",
      "tree": "cc046b7abd60e49a5a419945168facd08142bdcb",
      "parents": [
        "3839cefd31ec8ce997d898d33aa29aa395d8495c"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 12:25:06 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Sep 10 12:25:06 2013 -0700"
      },
      "message": "various code cleanup\n\n- change single case switch statements to if\n- no need for pointer to url.Values since it has a pointer internally\n- document that reflectValue updates url.Values and recurses through val\n"
    },
    {
      "commit": "3839cefd31ec8ce997d898d33aa29aa395d8495c",
      "tree": "41ca2f11e26ed402fd2d1355e3de0a14532b0e06",
      "parents": [
        "c6dce2f795e1b0b43079ef35afeefb155d7c22e7"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 12:23:21 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Sep 10 12:23:21 2013 -0700"
      },
      "message": "support dereferencing pointers to pointers\n\nalso update docs to clarify how empty values are handled\n"
    },
    {
      "commit": "c6dce2f795e1b0b43079ef35afeefb155d7c22e7",
      "tree": "07441ef037f06a6a74eb955ff506413baf68ef2d",
      "parents": [
        "066ac02329c3d517f760d4f01364e4e3f0d3994e"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 12:18:26 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Sep 10 12:18:26 2013 -0700"
      },
      "message": "combine tags.go into encode.go and simplify\n\nhaving tagOptions be of type []string *greatly* simplifies working with\noptions.\n"
    },
    {
      "commit": "066ac02329c3d517f760d4f01364e4e3f0d3994e",
      "tree": "dd0a418ab9ea7f2a598e1378ceb18358134164ed",
      "parents": [
        "d45ccfe3ece3def48ecb9c6af2a8e165734f3318"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Mon Sep 09 14:29:32 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Sep 09 14:29:32 2013 -0700"
      },
      "message": "fix imports and cleanup code handling pointers\n"
    },
    {
      "commit": "d45ccfe3ece3def48ecb9c6af2a8e165734f3318",
      "tree": "03569b23b661fd2138c19babebf23f980c166b99",
      "parents": [
        "ab27bc2c541fddbad0a4058eb1ab6d955c594609"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Mon Sep 09 11:36:53 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Sep 09 11:36:53 2013 -0700"
      },
      "message": "improve handling of slice values\n\nensure that any type-specific encoding logic is applied for each value\nin a slice or array.\n"
    },
    {
      "commit": "ab27bc2c541fddbad0a4058eb1ab6d955c594609",
      "tree": "7ec2b2fe6e98305cd5311bc4b2bc44075321a86a",
      "parents": [
        "e8fedec7a51f1e254463f577e06340811d4d80bc"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Mon Sep 09 11:04:03 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Sep 09 11:04:03 2013 -0700"
      },
      "message": "add LICENSE (BSD)\n"
    },
    {
      "commit": "e8fedec7a51f1e254463f577e06340811d4d80bc",
      "tree": "81c908142bc3db390ca00a0a356d5dabea399eb0",
      "parents": [
        "0d72f004f7b312d6fa5f857577f660a6d95e5dd6"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Mon Sep 09 09:32:17 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Sep 09 09:32:17 2013 -0700"
      },
      "message": "handle struct pointers passed to Values()\n"
    },
    {
      "commit": "0d72f004f7b312d6fa5f857577f660a6d95e5dd6",
      "tree": "b6cd602f1e324d8562a2f6191de6dd7b9ce1a19c",
      "parents": [
        "5428a56ee140ca79b090d5c72cf7e00b36be8433"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 16:23:17 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 16:29:33 2013 -0700"
      },
      "message": "add user documentation\n"
    },
    {
      "commit": "5428a56ee140ca79b090d5c72cf7e00b36be8433",
      "tree": "99dba60d9289168b32c465754e53eebbb888e588",
      "parents": [
        "d167cbdb648290070db39d65171e51f6129f1543"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 16:11:16 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 16:11:16 2013 -0700"
      },
      "message": "add support for anonymous struct fields\n\nthese fields are encoded as if their inner exported fields were fields\non the outer struct, the same as encoding/json\n"
    },
    {
      "commit": "d167cbdb648290070db39d65171e51f6129f1543",
      "tree": "ed3f548f07e70e471b9d01e542f3c7dd7ae95c5d",
      "parents": [
        "f5a9f37dd064bfcd0eca8e7d3dcb05194f462d13"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 15:06:52 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 15:06:52 2013 -0700"
      },
      "message": "allow encoding bool values as int\n\nincluding the \"int\" field tag on a bool field will encode the value as\neither \"1\" or \"0\".\n"
    },
    {
      "commit": "f5a9f37dd064bfcd0eca8e7d3dcb05194f462d13",
      "tree": "b3762b9f364f1c2a70cbb64d9c1a77e30aad96b3",
      "parents": [
        "c51ad0c35621b0ede069181f424bd1f3492ed4cb"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 15:01:18 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 15:01:18 2013 -0700"
      },
      "message": "restructure tests a little more\n\nbreak type tests down to be table driven, so errors are a little easier\nto decipher\n"
    },
    {
      "commit": "c51ad0c35621b0ede069181f424bd1f3492ed4cb",
      "tree": "f2235c4a6896ef08488fa1bcda2fb7f9f1c98207",
      "parents": [
        "30a774e1fdde7442573b3fe43d56cab502b62ea1"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 13:19:58 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 13:22:26 2013 -0700"
      },
      "message": "support command and space delimited strings\n\nusing the \"comma\" and \"space\" field tag options, slices or arrays will\nbe marshaled as comma or space delimited strings.\n"
    },
    {
      "commit": "30a774e1fdde7442573b3fe43d56cab502b62ea1",
      "tree": "89b50cac2004bc1509e27ce0029f3d8ed4dfc93c",
      "parents": [
        "65fbecd2aff2a690d1aa24d30a97cc0ee2222ddc"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 13:01:30 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 13:01:30 2013 -0700"
      },
      "message": "add support for time.Time field values\n\nTime values are serialized as RFC3339 timestamps by default.  If the\n\"unix\" field tag is specified, it is serialized as a Unix time (see\ntime.Unix())\n"
    },
    {
      "commit": "65fbecd2aff2a690d1aa24d30a97cc0ee2222ddc",
      "tree": "44d85490d03d9a20a5ce9543adb65a5e7a1d3878",
      "parents": [
        "afb9774134160dd91338c394b41ab166ce394d71"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 12:39:30 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 12:42:33 2013 -0700"
      },
      "message": "add support for slice and array field values\n"
    },
    {
      "commit": "afb9774134160dd91338c394b41ab166ce394d71",
      "tree": "f2617723371b6fcc117cf9dcba2281ca62de53dc",
      "parents": [
        "fd7548d9aff4ab344996832506956cb2a232e182"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 12:17:52 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 12:26:28 2013 -0700"
      },
      "message": "dereference non-empty pointer field values\n"
    },
    {
      "commit": "fd7548d9aff4ab344996832506956cb2a232e182",
      "tree": "91ca2a5b70b97bf31c7b8815ad025e16296c03f8",
      "parents": [
        "954984c738cb6e6143dd320c195ec5a57ba8a73b"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 12:07:34 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 12:07:34 2013 -0700"
      },
      "message": "skip unexported fields\n"
    },
    {
      "commit": "954984c738cb6e6143dd320c195ec5a57ba8a73b",
      "tree": "57bb03b4956eb55b9daccd7be9bcc6cc37334c1f",
      "parents": [
        "f7d31fdc2e3f198a9a14b72ab2538cc828b68be9"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 12:04:59 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 12:04:59 2013 -0700"
      },
      "message": "restructure tests\n\nsplit tests for field types and field tags\n"
    },
    {
      "commit": "f7d31fdc2e3f198a9a14b72ab2538cc828b68be9",
      "tree": "90a53b95a2332b51e2364b682b8634e3ec0fbe11",
      "parents": [
        "bd775fd84bd63a4ae99794a9212bf1dfcfc30229"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 11:09:43 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 11:15:46 2013 -0700"
      },
      "message": "skip empty fields with the \"omitempty\" tag field\n\nisEmptyValue() copied from encoding/json\n"
    },
    {
      "commit": "bd775fd84bd63a4ae99794a9212bf1dfcfc30229",
      "tree": "3eff72f228bc6b047c9cbde8aae3d82ba6a2ec1f",
      "parents": [
        "0c2ced0ea7f1424699f70ba717c90beb11da33a7"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 11:01:08 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 11:01:08 2013 -0700"
      },
      "message": "skip fields with tag name \"-\"\n"
    },
    {
      "commit": "0c2ced0ea7f1424699f70ba717c90beb11da33a7",
      "tree": "5888d9c13d26ad22ae73b411006c932efab232ea",
      "parents": [
        "5afcd79de991628109c4718fc4cd92a16cd5cd02"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 10:42:06 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 10:46:23 2013 -0700"
      },
      "message": "add support structured tag fields\n\ntags.go is copied from encoding/json in the go standard library.  We\u0027re\nnot doing anything with the field options yet, just parsing them out.\n"
    },
    {
      "commit": "5afcd79de991628109c4718fc4cd92a16cd5cd02",
      "tree": "d0f9622dbe1375c01a49ffe2b45f18ae012f684b",
      "parents": [
        "19ef3dcdd4fb1439a0c07fa3305e713183932b1b"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 10:34:36 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 10:46:23 2013 -0700"
      },
      "message": "allow specifying param name in \"url\" field tag\n"
    },
    {
      "commit": "19ef3dcdd4fb1439a0c07fa3305e713183932b1b",
      "tree": "1ef76e452c54dc7c80e60478dd1c2903171ea08a",
      "parents": [
        "e376fe87b0445e8aed18ac3e78b7ac59b7358754"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 10:30:05 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 10:46:23 2013 -0700"
      },
      "message": "initial naive implementation\n\nconvert struct fields to url.Values just using field names\n"
    },
    {
      "commit": "e376fe87b0445e8aed18ac3e78b7ac59b7358754",
      "tree": "e36fab067f14c35cf7a65a037908fc0ef43cf1ab",
      "parents": [
        "9bc6eb0b9e0abc498b995ded009d7f6848f1e0db"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 10:19:46 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 10:19:46 2013 -0700"
      },
      "message": "ignore *.test files\n"
    },
    {
      "commit": "9bc6eb0b9e0abc498b995ded009d7f6848f1e0db",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 10:10:01 2013 -0700"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 10:10:01 2013 -0700"
      },
      "message": "initial empty commit\n"
    }
  ]
}
