)]}'
{
  "log": [
    {
      "commit": "00be782c2bb48fdc68ad59eda45eed7623758d74",
      "tree": "f48989092b3363d01348e01673cb79f4604de3a4",
      "parents": [
        "c7e433615fc2291e29a79eda0c34cfb51e446902"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 11:16:46 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 11:16:46 2026 -0400"
      },
      "message": "Bump github/codeql-action/* from 4.37.9 to 4.38.1\n"
    },
    {
      "commit": "c7e433615fc2291e29a79eda0c34cfb51e446902",
      "tree": "e0fe038e6c107868961b47cfed4cbfaa6aaa13eb",
      "parents": [
        "ae3d36b8cea5d1fa5eaf3bd28f07bb111d1890e0"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 11:08:25 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 11:08:25 2026 -0400"
      },
      "message": "Bump actions/setup-java from 6.0.0 to 6.0.1\n"
    },
    {
      "commit": "ae3d36b8cea5d1fa5eaf3bd28f07bb111d1890e0",
      "tree": "2df931d109127ead6bf98c567e9d6b8a14bce64a",
      "parents": [
        "9c9a0047b2c4ae5b6be0382177cd6d19439601f7"
      ],
      "author": {
        "name": "Piotr P. Karwasz",
        "email": "pkarwasz-github@apache.org",
        "time": "Wed Sep 09 15:43:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 09:43:13 2026 -0400"
      },
      "message": "Harden XML parsing via commons-secure-xml (#766)\n\n* Harden XML parsing via commons-secure-xml\n\nCreate XmlStringLookup\u0027s document builder and XPath factories through\norg.apache.commons:commons-secure-xml. The secure factories enable\nFEATURE_SECURE_PROCESSING and install a non-removable entity-resolver\nfloor on every parser they produce: external DTD and entity lookups are\nresolved to empty content instead of being fetched, and internal entity\nexpansion is bounded, regardless of the JAXP implementation on the\nclasspath.\n\nChanges:\n- Add the commons-secure-xml dependency (1.0.0-SNAPSHOT until its first\n  release).\n- Route factory creation through SecureDocumentBuilderFactory and\n  SecureXPathFactory in XmlStringLookup when the instance\u0027s feature map\n  enables secure processing. The documented opt-outs keep their\n  meaning: feature maps without secure processing, and the standard\n  javax.xml.accessExternalDTD system property (which the secure\n  factory\u0027s resolver floor would otherwise ignore), keep using the\n  plain JAXP factories, so external entity resolution can be restored\n  where it is wanted.\n- Adapt the secure-path tests to the secure contract: a parser may\n  either reject a document with an external reference or parse it with\n  the reference resolved to empty content; the tests now assert that\n  the external content does not leak into the result instead of\n  expecting one fixed failure mode.\n- Run the CI and CodeQL builds with -Puse-apache-snapshots (inherited\n  from the org.apache:apache parent POM) so the commons-secure-xml\n  SNAPSHOT resolves; CodeQL\u0027s autobuild receives the profile through\n  MAVEN_ARGS.\n\nAssisted-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01MHgnMnGWHQoH2zD2jFdoMT\n\n* Use the Commons Secure XML 1.0.0 release candidate\n\nBump org.apache.commons:commons-secure-xml from 1.0.0-SNAPSHOT to 1.0.0\nand add the temporary staging repository\nhttps://repository.apache.org/content/repositories/orgapachecommons-1962/\nafter Central, so the vote gets downstream CI results. Drop the\n-Puse-apache-snapshots profile from the CI workflows, which the release\nversion no longer needs. Remove the staging repository once 1.0.0 is\nreleased.\n\nAssisted-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_0167e29ScPEdfzJnEFm95imK\n\n* Bump Apache Commons Secure XML from 1.0.0-SNAPSHOT to 1.0.0\n\n* Drop the insecure XmlStringLookup fallback\n\nCommons Secure XML blocks external resource fetching with an entity\nresolver rather than with parser features, so the opt-outs the previous\ncommit documented never worked: neither a feature map without secure\nprocessing nor the javax.xml.accessExternalDTD system property reaches\nthe resolver floor. Always create the factories through\nSecureDocumentBuilderFactory and SecureXPathFactory instead.\n\nChanges:\n- Remove the plain-JAXP fallback from XmlStringLookup.lookup(String),\n  along with the DEFAULT_XML_FEATURES and DEFAULT_XPATH_FEATURES maps\n  that only existed to select it.\n- Document the two aspects Commons Secure XML secures separately:\n  FEATURE_SECURE_PROCESSING governs processing limits and remains\n  settable, while external DTD subsets and entities are blocked outright\n  and cannot be re-enabled.\n- Remove the references to the \"XmlStringLookup.secure\" system property,\n  which was never introduced.\n- Disable the tests that expect an external entity to resolve, and\n  tighten the leak assertion now that the parser no longer rejects such\n  documents.\n- Shorten the changelog entry and state the behavior change.\n\nAssisted-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Y7VfssZLkK11bBY2kVyyY4\n\n* Add missing tests\n\n* Fence external XML references in XmlStringLookup\n\nCommons Secure XML blocks external DTD subsets and entities with a\nnon-removable entity-resolver floor, and lets a caller opt specific\nresources back in by installing a resolver of their own. Reuse the Path\nfences the lookup already accepts for that: a caller who declared\ntrusted roots for the document gets its follow-up resources resolved\nfrom those same roots, and from nowhere else.\n\nChanges:\n- Add PathFenceResolver, a package-private EntityResolver that resolves\n  a system identifier only when it lands inside the fence and refuses\n  anything else, including any non-file reference. XmlStringLookup\n  installs it only when the fence has roots, so an unfenced lookup\n  resolves no external resource at all.\n- Parse with the document\u0027s own URI, so relative system identifiers\n  resolve against the document as XML requires, rather than against the\n  process working directory.\n- Add PathFence.isEmpty() to tell an empty fence from a real allow.\n- Reword the XmlStringLookup and StringLookupFactory Javadoc: secure\n  processing covers two separate aspects, the FEATURE_SECURE_PROCESSING\n  limits that callers can still turn off and the external references\n  that only a fence can opt back in. Drop the references to the\n  XmlStringLookup.secure system property, which was never implemented.\n- Move the external-reference fixtures to\n  src/test/resources/XmlStringLookup, with the referenced files in the\n  root and the documents that reference them one directory below, so\n  one pair of files covers both the allowed and the refused case\n  depending on where the fence points.\n\nAssisted-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QoqFgJRAAHAHhvJTfDRfUt\n\n* Add a changelog entry for the base URI fix\n\nXmlStringLookup used to parse through DocumentBuilder.parse(InputStream),\nwhich supplies no base URI, so the parser expanded a relative system\nidentifier against the process working directory rather than against the\ndocument. That defect shipped in 1.5 and was reachable through\nStringLookupFactory.xmlStringLookup(Map) with a feature map that left\nexternal references enabled, so record it as a fix of its own rather\nthan folding it into the Commons Secure XML entries.\n\nAssisted-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QoqFgJRAAHAHhvJTfDRfUt\n\n* Cover the malformed system identifier branch of PathFenceResolver\n\nPathFenceResolver.toPath catches URISyntaxException, IllegalArgumentException\nand FileSystemNotFoundException, but every refusal the tests exercised went\nthrough the preceding scheme check instead, leaving that catch untested.\n\n- testMalformedSystemIdIsRefused covers the URISyntaxException: an\n  unencoded space, the realistic way a system identifier goes malformed.\n- testUnconvertibleFileUrlIsRefused covers the IllegalArgumentException\n  from Paths.get on a \u0027file:\u0027 URI that parses and passes the scheme check\n  but names no path: an opaque one, and one carrying a fragment.\n\nBoth assert on the cause, so a change that made the scheme check reject\nthese earlier would not silently keep the tests green.\n\nAssisted-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QoqFgJRAAHAHhvJTfDRfUt\n\n* Drop the unreachable FileSystemNotFoundException catch\n\nPaths.get(URI) raises FileSystemNotFoundException only for a scheme whose\nprovider is not installed, and PathFenceResolver.toPath rejects every\nscheme but \u0027file\u0027 before it gets there, so that catch type could never\nfire.\n\nAssisted-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QoqFgJRAAHAHhvJTfDRfUt\n\n---------\n\nCo-authored-by: Gary Gregory \u003cgarydgregory@gmail.com\u003e"
    },
    {
      "commit": "9c9a0047b2c4ae5b6be0382177cd6d19439601f7",
      "tree": "bcfd57b2b8d9621d5b7cd3aca6136cbf9c6e76b4",
      "parents": [
        "5d882dca7cb01b52a184a7e36f71d0aae4b1c9ac"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Sep 07 11:06:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Sep 07 11:06:44 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-parent from 104 to 105.\n"
    },
    {
      "commit": "5d882dca7cb01b52a184a7e36f71d0aae4b1c9ac",
      "tree": "bf19c48a8fec085c00bf0beed7f7d702518f9496",
      "parents": [
        "8917fae05e93a393bfb65e20cee79080ebc58292"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 09:51:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 09:51:44 2026 -0400"
      },
      "message": "StringMatcher.isMatch(CharSequence, int, int, int) forwards bufferEnd as\nbufferStart (#768).\n"
    },
    {
      "commit": "8917fae05e93a393bfb65e20cee79080ebc58292",
      "tree": "130b34c6e9b4d1858558d9375a192c3112f5f795",
      "parents": [
        "81de4f7a7c7d3b13d89edd72d4c4b92aa33e6c81"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 09:50:32 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 09:50:32 2026 -0400"
      },
      "message": "Typo\n"
    },
    {
      "commit": "81de4f7a7c7d3b13d89edd72d4c4b92aa33e6c81",
      "tree": "bd169ffe11aae1f39fc7b49f5d82a4cb231d2f74",
      "parents": [
        "a6cbba814422a06a0366468b2346f52aaacf8f3d"
      ],
      "author": {
        "name": "Jeff Lenamon",
        "email": "85593689+lenamonj@users.noreply.github.com",
        "time": "Fri Sep 04 09:49:28 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 09:49:28 2026 -0400"
      },
      "message": "StringMatcher.isMatch(CharSequence, int, int, int) forwards bufferEnd as bufferStart (#768)\n\n* StringMatcher.isMatch(CharSequence, int, int, int) forwards bufferEnd as bufferStart\n\n* Use a valid window as the negative case and cover isMatch(CharSequence, int) directly"
    },
    {
      "commit": "a6cbba814422a06a0366468b2346f52aaacf8f3d",
      "tree": "2e0da5e05bcb31ec7cf51b263baafe3d28f87a67",
      "parents": [
        "8f11af0b260641346da6909751670c7c6dcbdb63"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 08:06:19 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 08:06:19 2026 -0400"
      },
      "message": "Move profile from Java 22 to 25 (LTS) boundary.\n\nGraal 25 is aligned with Java 25.\n"
    },
    {
      "commit": "8f11af0b260641346da6909751670c7c6dcbdb63",
      "tree": "0a5afe5f2daa0890f792f1b06fe5e64371720487",
      "parents": [
        "d14377dd6f6a0649b894a9586112720623aba28c"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 07:46:33 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 07:46:33 2026 -0400"
      },
      "message": "Bump net.bytebuddy:byte-buddy from 1.18.10 to 1.18.13\n\nBump net.bytebuddy:byte-buddy-agent from 1.18.10 to 1.18.13\n"
    },
    {
      "commit": "d14377dd6f6a0649b894a9586112720623aba28c",
      "tree": "ca3103e3d88c60bd6e81ecf29b1eb939f7da6d37",
      "parents": [
        "ad7bce752d49f50630aa2a059d66dc572c921bc1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 07:42:36 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 04 07:42:36 2026 -0400"
      },
      "message": "[test] Bump org.graalvm.js:js from 25.0.2 to 25.3.4.1 on Java 22 and up.\n\n[test] Bump org.graalvm.js:js-scriptengine from 25.0.2 to 25.3.4.1 on\nJava 22 and up.\n"
    },
    {
      "commit": "ad7bce752d49f50630aa2a059d66dc572c921bc1",
      "tree": "ddabd702e0e9253f3f728fcb075ea54cc642fe30",
      "parents": [
        "14657580972a27e504d08c1057699aaa31e0e6bc"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 03 07:23:42 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 03 07:23:42 2026 -0400"
      },
      "message": "Compare characters by value in DamerauLevenshteinDistance (#770).\n"
    },
    {
      "commit": "14657580972a27e504d08c1057699aaa31e0e6bc",
      "tree": "d48d53ab065e48f36c43781ffe8b86a1d3f4b766",
      "parents": [
        "52c1e545be7c0c0fad766e4133a055706f4a222d"
      ],
      "author": {
        "name": "Weiki",
        "email": "weiki886@163.com",
        "time": "Thu Sep 03 19:22:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 07:22:57 2026 -0400"
      },
      "message": "Compare characters by value in DamerauLevenshteinDistance (#770)\n\ncalculateCost compared the boxed Character values returned by\nSimilarityInput.at with \u003d\u003d, so it only recognized equal characters\nthat Character.valueOf caches. That cache covers values up to 127,\nso every non-ASCII character compared unequal to itself: applying the\ndistance to \"caf\\u00e9\" and \"caf\\u00e9\" reported 1 instead of 0, and a\ntwo-character CJK input compared against itself reported 2. The\nadjacent-transposition branch never fired for non-ASCII input either,\nso transposing two accented characters cost 2 instead of 1. The\nlimited variant was affected the same way and could return -1 for\ninputs whose real distance is within the threshold.\n\nCompare with Objects.equals instead, matching every other class in\nthis package: LevenshteinDistance, LevenshteinDetailedDistance,\nJaroWinklerSimilarity and HammingDistance all use equals on the\nvalues from at."
    },
    {
      "commit": "52c1e545be7c0c0fad766e4133a055706f4a222d",
      "tree": "f459c1138e089d14ff3c928ac936d9165dd8a07f",
      "parents": [
        "5884c2dad6351869b203d29152847815f27a4fff"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Aug 31 11:19:35 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Aug 31 11:19:35 2026 +0000"
      },
      "message": "Bump github/codeql-action/analyze from 4.37.8 to 4.37.9.\n"
    },
    {
      "commit": "5884c2dad6351869b203d29152847815f27a4fff",
      "tree": "64966bd65e7ad7d2e71546953f4a293635ead90d",
      "parents": [
        "c288f85fbd04331b459da784433472743c5b531d"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 29 16:17:04 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 29 16:17:04 2026 -0400"
      },
      "message": "Add link to Commons Security Model\n"
    },
    {
      "commit": "c288f85fbd04331b459da784433472743c5b531d",
      "tree": "ef7492334db7d3b084d14c3bc4ccda1ae27cadfe",
      "parents": [
        "114609057dcfc27e54d75c7fcf744de845951b82"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 29 16:16:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 29 16:16:44 2026 -0400"
      },
      "message": "Fix Maven property commons.release.version\n"
    },
    {
      "commit": "114609057dcfc27e54d75c7fcf744de845951b82",
      "tree": "775f87443a0f204b2233d86c6576567a2266d8a1",
      "parents": [
        "249770ef6309e04c8bae84e5fa1dcd33bfaec803"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 27 13:42:21 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 27 13:42:21 2026 -0400"
      },
      "message": "Bump actions/setup-java from 5.7.0 to 6.0.0.\n"
    },
    {
      "commit": "249770ef6309e04c8bae84e5fa1dcd33bfaec803",
      "tree": "10e40e5cd149fee67b1c9f48ba716db3c9578efe",
      "parents": [
        "f04ebec055370aba39ce747a2a2b60697d8d1ac6"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 25 16:37:56 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 25 16:37:56 2026 -0400"
      },
      "message": "Fix ArrayIndexOutOfBoundsException in DnsStringLookup for \u0027|\u0027 key\n(#765).\n\n- Add action to changes.xml.\n- Use longer lines.\n- Sort members.\n"
    },
    {
      "commit": "f04ebec055370aba39ce747a2a2b60697d8d1ac6",
      "tree": "7907bd2c67058898148a16eb1f0d62bc53419142",
      "parents": [
        "e0af4001481095db23774789743d731fcebe6711"
      ],
      "author": {
        "name": "Javid Khan",
        "email": "dxbjavid@gmail.com",
        "time": "Wed Aug 26 02:05:02 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 16:35:02 2026 -0400"
      },
      "message": "Guard empty split result in DnsStringLookup.lookup (#765)"
    },
    {
      "commit": "e0af4001481095db23774789743d731fcebe6711",
      "tree": "036665d224fa7af1b94c88e1602f1626690c1d94",
      "parents": [
        "5a23e10056646febd4d43527a8c5b930ea540c78"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 25 14:14:59 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 25 14:14:59 2026 -0400"
      },
      "message": "Bump github/codeql-action/init from 4.37.7 to 4.37.8\n"
    },
    {
      "commit": "5a23e10056646febd4d43527a8c5b930ea540c78",
      "tree": "02d7b58fbe0357d37d82c11718292078b92530b9",
      "parents": [
        "624443b8a4fb421ce1621fdad98fd6928290f3e2"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 22 09:58:42 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 22 09:58:42 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-parent from 103 to 104.\n\nFix Checkstyle issues.\n"
    },
    {
      "commit": "624443b8a4fb421ce1621fdad98fd6928290f3e2",
      "tree": "a884d387690c1496c36dafc67d8ae5aa81585016",
      "parents": [
        "0b68c23d465aa148396a030467fa43dce6547409"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 18 16:02:17 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 18 16:02:17 2026 -0400"
      },
      "message": "Bump codeql-action from 4.37.6 to 4.37.7\n"
    },
    {
      "commit": "0b68c23d465aa148396a030467fa43dce6547409",
      "tree": "6a297a081932cb3ef33becf6b758326b15675199",
      "parents": [
        "69167c8344feada712e1e8736b205f5bf1b987e5"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Aug 16 16:12:17 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Aug 16 16:12:17 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "69167c8344feada712e1e8736b205f5bf1b987e5",
      "tree": "27a8a071ff8f779da2c831e425a926c5c2255b97",
      "parents": [
        "d7146030127e2a7004cb3b87798ebe23e5f591d0"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Aug 10 09:00:32 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Aug 10 09:00:32 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-collections4 from 4.5.0 to 4.6.0\n"
    },
    {
      "commit": "d7146030127e2a7004cb3b87798ebe23e5f591d0",
      "tree": "a139e3addf82846916253a6a6d8f1c9d3e43c4c8",
      "parents": [
        "f0645eed1f8d9dd767b6145390e167a72259e29a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Aug 05 14:15:06 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Aug 05 14:15:06 2026 -0400"
      },
      "message": "Bump actions/setup-java from 5.6.0 to 5.7.0\n"
    },
    {
      "commit": "f0645eed1f8d9dd767b6145390e167a72259e29a",
      "tree": "ee4eb9ec660d325094f5e8fdf4aa6d35bdb08239",
      "parents": [
        "6a06b28bc8837fa10967d9b90ac210e6af8fa285"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 04 15:59:30 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 04 15:59:30 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.37.3 to 4.37.6.\n"
    },
    {
      "commit": "6a06b28bc8837fa10967d9b90ac210e6af8fa285",
      "tree": "66da69563393958e0d1914a4e7e5fdbc6c95f74f",
      "parents": [
        "01f9e9c7402d3af01ef815c0e19932cb19c29228"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 04 15:56:43 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 04 15:56:43 2026 -0400"
      },
      "message": "[TEXT-242] StringSubstitutorReader can now substitute variables with a\nsuffix longer than two characters (#764).\n"
    },
    {
      "commit": "01f9e9c7402d3af01ef815c0e19932cb19c29228",
      "tree": "c9aa2b4ac8009e13813c27563157a957ae223dcd",
      "parents": [
        "79083a00a3c593592a42dd975b6e9ed27e35179a"
      ],
      "author": {
        "name": "Maksym Korshun",
        "email": "korshunmax82@gmail.com",
        "time": "Tue Aug 04 20:08:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 14:08:46 2026 -0400"
      },
      "message": "StringSubstitutorReader now substitute variables whose configured suffix is longer than two characters (#764)"
    },
    {
      "commit": "79083a00a3c593592a42dd975b6e9ed27e35179a",
      "tree": "b9ea27795b07c4b8ace80e8cdeeedd485d63e45b",
      "parents": [
        "d17d15b4185eb9db728292c6f9fbbb7b283be231"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Aug 02 17:12:59 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Aug 02 17:12:59 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "d17d15b4185eb9db728292c6f9fbbb7b283be231",
      "tree": "cf6dc0b1f77bb8fadba41b46fb1f55e0c926fd6a",
      "parents": [
        "a0b01817f43bda9cca661b23c237ab1fb9c9d74f"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 07:36:49 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 07:36:49 2026 -0400"
      },
      "message": "[TEXT-241] TextStringBuilder.lastIndexOf(\"\") and\nStrBuilder.lastIndexOf(\"\") return incorrect index for empty string (size\n- 1 instead of size) (#763)."
    },
    {
      "commit": "a0b01817f43bda9cca661b23c237ab1fb9c9d74f",
      "tree": "0977d69930d1e20c5742444805564864fcdd055d",
      "parents": [
        "abbbfbfa864756e2832c20c70a63c149db4c41ae"
      ],
      "author": {
        "name": "Maksym Korshun",
        "email": "korshunmax82@gmail.com",
        "time": "Thu Jul 30 13:34:06 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 07:34:06 2026 -0400"
      },
      "message": "[TEXT-241] TextStringBuilder.lastIndexOf(\"\") and StrBuilder.lastIndexOf(\"\") return incorrect index for empty string (size - 1 instead of size) (#763)\n\n* [TEXT-241] Annotate deprecated StrBuilderTest\n\n* [TEXT-241] Fix lastIndexOf() for empty search strings in StrBuilder and TextStringBuilder\n\n* refactor: replace conditional with Math.min"
    },
    {
      "commit": "abbbfbfa864756e2832c20c70a63c149db4c41ae",
      "tree": "2c989c0d18659a6bd3cf73fd6a2f853b675307ff",
      "parents": [
        "373b398ad9fad4bca6174963f819549e4c6fbc4a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 29 08:14:56 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 29 08:14:56 2026 -0400"
      },
      "message": "Bump ossf/scorecard-action from 2.4.3 to 2.4.4.\n"
    },
    {
      "commit": "373b398ad9fad4bca6174963f819549e4c6fbc4a",
      "tree": "523d04ff22549304bf21baa4a336399bc9485f75",
      "parents": [
        "9988a06737687d126628f620cd9c989bbc2d3775"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jul 28 14:54:48 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jul 28 14:54:48 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.37.1 to 4.37.3\n"
    },
    {
      "commit": "9988a06737687d126628f620cd9c989bbc2d3775",
      "tree": "33dbd36cafc8476fcb8fb83f053085ea92dd1325",
      "parents": [
        "8479d98d979de2dd819454061af08637c8781d50"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jul 27 15:23:14 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jul 27 15:23:14 2026 +0000"
      },
      "message": "Better use of JUnit API.\n"
    },
    {
      "commit": "8479d98d979de2dd819454061af08637c8781d50",
      "tree": "ef09f5b372a468756f2ec5bb061df86e03fc9e9d",
      "parents": [
        "910b42fc8f28a22aff77390187bb2f63ab3e52ef"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jul 27 15:20:25 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jul 27 15:20:25 2026 +0000"
      },
      "message": "Better use of JUnit API.\n"
    },
    {
      "commit": "910b42fc8f28a22aff77390187bb2f63ab3e52ef",
      "tree": "0bf4d51f6d4b8faf71a6977e0d257cb267fcb11f",
      "parents": [
        "3543957a0807a20fffc7b3e203ced1b142ab76f2"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 25 09:50:13 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 25 09:50:13 2026 -0400"
      },
      "message": "Bump actions/checkout from 7.0.0 to 7.0.1\n"
    },
    {
      "commit": "3543957a0807a20fffc7b3e203ced1b142ab76f2",
      "tree": "02bef85dd51022426180b3c4a26a730b8037f2e3",
      "parents": [
        "efcedf59ebf72ff8a3bf850732240136abe1c699"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 22 15:03:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 22 15:03:44 2026 -0400"
      },
      "message": "Add messages when throwing NullPointerException.\n"
    },
    {
      "commit": "efcedf59ebf72ff8a3bf850732240136abe1c699",
      "tree": "9b5b073f2f69ab5fc88ef2182ee2185c7d18cb64",
      "parents": [
        "910284c30a44440b7608e9227832101d3bf56ded"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 22 09:42:53 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 22 09:42:53 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-parent from 102 to 103.\n"
    },
    {
      "commit": "910284c30a44440b7608e9227832101d3bf56ded",
      "tree": "e5e5f744dc68137144bf96a68cba7d3c4203fda6",
      "parents": [
        "373886eeeb9ba25c8e2a49c81849cc3acbb42648"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jul 21 13:46:11 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jul 21 13:46:11 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.37.0 to 4.37.1\n"
    },
    {
      "commit": "373886eeeb9ba25c8e2a49c81849cc3acbb42648",
      "tree": "8cb89af23d9375998a99f9f7b01b1f70cbe9d0c3",
      "parents": [
        "6d06f0126f234594c60304d2aab06aa9d507e957"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jul 21 11:46:28 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jul 21 11:46:28 2026 -0400"
      },
      "message": "Bump actions/setup-java from 5.5.0 to 5.6.0\n"
    },
    {
      "commit": "6d06f0126f234594c60304d2aab06aa9d507e957",
      "tree": "6b569981df86aaa575a03c1a0c5099ac4cd69706",
      "parents": [
        "fcf5a757883e702be5d93b4d25bb0a6c7add3829"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 18 10:04:44 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 18 10:04:44 2026 -0700"
      },
      "message": "Return null for malformed input in UrlDecoderStringLookup (#749).\n"
    },
    {
      "commit": "fcf5a757883e702be5d93b4d25bb0a6c7add3829",
      "tree": "2abb448f5811aad4a7c58cc31d55e047c2e7b2aa",
      "parents": [
        "c8fe141580286aebd42f6eaa90bf4b724dc540eb"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 18 10:04:38 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 18 10:04:38 2026 -0700"
      },
      "message": "Sort members.\n"
    },
    {
      "commit": "c8fe141580286aebd42f6eaa90bf4b724dc540eb",
      "tree": "12b3ab912accf1bec85d621eef38d80a0b64f8df",
      "parents": [
        "5324862267b52aa167e6d51aeaa13eb348b9e9e0"
      ],
      "author": {
        "name": "Javid Khan",
        "email": "dxbjavid@gmail.com",
        "time": "Sat Jul 18 22:32:58 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 13:02:58 2026 -0400"
      },
      "message": "Return null for malformed input in UrlDecoderStringLookup (#749)"
    },
    {
      "commit": "5324862267b52aa167e6d51aeaa13eb348b9e9e0",
      "tree": "a385c8e18a0bd1a802a911eb57170a4514be802f",
      "parents": [
        "e1efd23957c727e60c0d4b98394375bdfc971c49"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 18 09:58:59 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 18 09:58:59 2026 -0700"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "e1efd23957c727e60c0d4b98394375bdfc971c49",
      "tree": "24361d0e83e58b290ebfecfe59d776a286629983",
      "parents": [
        "fcf5f4838bd59a303043c1b5e3b0b48b36452664"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jul 13 13:50:26 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jul 13 13:50:26 2026 -0700"
      },
      "message": "Bump actions/setup-java from 5.4.0 to 5.5.0\n"
    },
    {
      "commit": "fcf5f4838bd59a303043c1b5e3b0b48b36452664",
      "tree": "ea4898dc704f39871f07d2098c992c741fccd056",
      "parents": [
        "7eb9942da32a23e54909b62ba220b6c367ec6b70"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 11:18:46 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 11:18:46 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "7eb9942da32a23e54909b62ba220b6c367ec6b70",
      "tree": "e6933ae97a2005094f6d2bfcf27f52a001438cf9",
      "parents": [
        "cb74e0d7e25e0e5cfdcc1c22cca9fc1330475ab9",
        "ddaad175af54fd19f47015c87357052af0618040"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 11:08:36 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 11:08:36 2026 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of https://github.com/apache/commons-text.git"
    },
    {
      "commit": "cb74e0d7e25e0e5cfdcc1c22cca9fc1330475ab9",
      "tree": "143fb5195486e705f8835a816a1758dba5385cdf",
      "parents": [
        "e906a0801e03da31256f0cba00d002f9814e8a9a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 11:07:42 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 11:07:42 2026 -0400"
      },
      "message": "Match String case folding in TextStringBuilder.equalsIgnoreCase (#762)."
    },
    {
      "commit": "ddaad175af54fd19f47015c87357052af0618040",
      "tree": "90500a8e4daba489567ce8d041b45ec705af003f",
      "parents": [
        "e906a0801e03da31256f0cba00d002f9814e8a9a"
      ],
      "author": {
        "name": "alhuda",
        "email": "50839256+alhudz@users.noreply.github.com",
        "time": "Sat Jul 11 20:36:48 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 11:06:48 2026 -0400"
      },
      "message": "Match String case folding in TextStringBuilder.equalsIgnoreCase (#762)"
    },
    {
      "commit": "e906a0801e03da31256f0cba00d002f9814e8a9a",
      "tree": "de9d47e2ff75d0733495d547e9efa05fbdf08fa8",
      "parents": [
        "31f0e88a55d4ca03cdadf9f77228e2a6bef96849"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 09:09:18 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 09:09:18 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "31f0e88a55d4ca03cdadf9f77228e2a6bef96849",
      "tree": "2edd13b41b5f36b581535f0ce909b074aee46d53",
      "parents": [
        "67cf87b8064af6092267d1e1da03131e6af98a22"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 08:47:58 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jul 11 08:47:58 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "67cf87b8064af6092267d1e1da03131e6af98a22",
      "tree": "7058ef8cd2ea6c8e8928e0933e288a9c0ef2603f",
      "parents": [
        "5174495d774b295fae6cecf35c0cdeffbad0ea71"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jul 10 09:09:18 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jul 10 09:09:18 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.36.3 to 4.37.0\n"
    },
    {
      "commit": "5174495d774b295fae6cecf35c0cdeffbad0ea71",
      "tree": "6f487c5fd1c5af291ac7f36e5fd46cdffff6e5dd",
      "parents": [
        "80fa2efe6dbf74840ca2cc677b152928d10bc152"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 09 06:49:54 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 09 06:49:54 2026 -0400"
      },
      "message": "Javadoc\n\nReduce vertical whitespace\n"
    },
    {
      "commit": "80fa2efe6dbf74840ca2cc677b152928d10bc152",
      "tree": "b5ddc1295d51016f15319fa97f1f170b62a3a455",
      "parents": [
        "611b13b31570fc1827abfd2e56e8ace420232804"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 09 06:37:47 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 09 06:37:47 2026 -0400"
      },
      "message": "Internal WordsUtils refactoring from PR #758."
    },
    {
      "commit": "611b13b31570fc1827abfd2e56e8ace420232804",
      "tree": "8d55caa492672acd6fa0273c8fd515618987a9b1",
      "parents": [
        "01fc810e8bd601e71475f9dbeee405466dc1df80"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 08 16:15:29 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 08 16:15:29 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.36.2 to 4.36.3\n"
    },
    {
      "commit": "01fc810e8bd601e71475f9dbeee405466dc1df80",
      "tree": "9d9c8c99cf187d4fe29d2c207becc88d892de90b",
      "parents": [
        "d3fd33d4956b7bf6df89f1739ea8b42c4e46d166"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 08 12:26:36 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 08 12:26:36 2026 -0400"
      },
      "message": "Add assertions to\nStringSubstitutorWithInterpolatorStringLookupTest.testSystemPropertyDefaultDefault()\n"
    },
    {
      "commit": "d3fd33d4956b7bf6df89f1739ea8b42c4e46d166",
      "tree": "14e2f3eaa312e5d9d296e6995cfebd6ab0dfcb9a",
      "parents": [
        "0a4410709dd246e4d713656f2e80f39df48dd28f"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 08 11:26:40 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 08 11:26:40 2026 -0400"
      },
      "message": "Better exception messages in ExtendedMessageFormat.applyPattern(String)\n\nBetter version of PR #758.\n"
    },
    {
      "commit": "0a4410709dd246e4d713656f2e80f39df48dd28f",
      "tree": "26c75af29bbc01f825470fcfa83603479011046c",
      "parents": [
        "87ace21b826d0f62fff118a80dbd84ec9712e8de"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 08 11:21:57 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 08 11:21:57 2026 -0400"
      },
      "message": "Add StringSubstitutorWithInterpolatorStringLookupTest.testSystemPropertyDefaultDefault()\n"
    },
    {
      "commit": "87ace21b826d0f62fff118a80dbd84ec9712e8de",
      "tree": "70ad9b724eb93728e68a1e453aeb7d7dff2a5922",
      "parents": [
        "1c0d817ad98f4827bff529b1021a847582898c08"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jul 05 08:30:27 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jul 05 08:30:27 2026 -0400"
      },
      "message": "Revert, wrong component\n"
    },
    {
      "commit": "1c0d817ad98f4827bff529b1021a847582898c08",
      "tree": "b3a3a40760ced478018bbd70dca6a10dde5893e5",
      "parents": [
        "da37d480ec898ac33db48e7a9975fba843532a4f"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jul 05 08:28:56 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jul 05 08:28:56 2026 -0400"
      },
      "message": "Add threat model place holder.\n"
    },
    {
      "commit": "da37d480ec898ac33db48e7a9975fba843532a4f",
      "tree": "3ac5b86052a3d44e2975c4b53246bcbafb663220",
      "parents": [
        "3c472dab8498de1ad70f30bece31fc9858a2080c"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jul 05 08:28:33 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jul 05 08:28:33 2026 -0400"
      },
      "message": "Add threat model place holder.\n"
    },
    {
      "commit": "3c472dab8498de1ad70f30bece31fc9858a2080c",
      "tree": "6dd8edcfc48d4d936ed4952e0e2a1aeb4a5065a5",
      "parents": [
        "e13a6434d869c6f3f19e0c28e809c4e8db0b9a5a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jul 05 06:48:05 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jul 05 06:48:05 2026 -0400"
      },
      "message": "Fix download link\n"
    },
    {
      "commit": "e13a6434d869c6f3f19e0c28e809c4e8db0b9a5a",
      "tree": "50dd1b14bd511a85adc8a472bc063fb2848ff3ff",
      "parents": [
        "742fac016285eca078e56a22c713f49a395c2d22"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 02 22:38:15 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 02 22:38:15 2026 +0000"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "742fac016285eca078e56a22c713f49a395c2d22",
      "tree": "ae922184d565d32a3a55a2c8e60620f576bc76d3",
      "parents": [
        "1f3b162e8300821ec1dd36fb777ba26820f55e57"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 02 20:05:10 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 02 20:05:10 2026 +0000"
      },
      "message": "Stop ExtendedMessageFormat seekNonWs reading past the pattern end\n(#759)."
    },
    {
      "commit": "1f3b162e8300821ec1dd36fb777ba26820f55e57",
      "tree": "f368ecb1ff8ceca6fb99e8496c9c2c6f89e6e713",
      "parents": [
        "a709955d121ed549cd76e2872f89a223e82d27e7"
      ],
      "author": {
        "name": "Javid Khan",
        "email": "dxbjavid@gmail.com",
        "time": "Fri Jul 03 01:33:43 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 16:03:43 2026 -0400"
      },
      "message": "Stop ExtendedMessageFormat seekNonWs reading past the pattern end (#759)\n\nConstructor now throws like JRE MessageFormat class it extends:\n\n        assertThrowsExactly(IllegalArgumentException.class, () -\u003e new MessageFormat(\"{\"));\n        assertThrowsExactly(IllegalArgumentException.class, () -\u003e new MessageFormat(\"{0,\"));\n        assertThrowsExactly(IllegalArgumentException.class, () -\u003e new MessageFormat(\"{0}extra{\"));"
    },
    {
      "commit": "a709955d121ed549cd76e2872f89a223e82d27e7",
      "tree": "c0f031126b20acfd6abdb0fecfbc2ba31460356a",
      "parents": [
        "0b7e80a07df8e47bd95fa55c11b3fe84016973a0"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 01 23:14:28 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 01 23:14:28 2026 +0000"
      },
      "message": "Bump graalvm.version from 25.0.3 to 25.1.3 on Java 22 and up (#760)."
    },
    {
      "commit": "0b7e80a07df8e47bd95fa55c11b3fe84016973a0",
      "tree": "59ed446f974f81525a668132b540cc8370ea3c36",
      "parents": [
        "961ac7fc87e11d5fc0bf0302b48713731ce0cdaf"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 01 19:12:37 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 19:12:37 2026 -0400"
      },
      "message": "Bump graalvm.version from 25.0.3 to 25.1.3 (#760)\n\nBumps `graalvm.version` from 25.0.3 to 25.1.3.\n\nUpdates `org.graalvm.js:js` from 25.0.3 to 25.1.3\n- [Release notes](https://github.com/graalvm/graaljs/releases)\n- [Changelog](https://github.com/oracle/graaljs/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/graalvm/graaljs/compare/vm-25.0.3...vm-25.1.3)\n\nUpdates `org.graalvm.js:js-scriptengine` from 25.0.3 to 25.1.3\n- [Release notes](https://github.com/graalvm/graaljs/releases)\n- [Changelog](https://github.com/oracle/graaljs/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/graalvm/graaljs/compare/vm-25.0.3...vm-25.1.3)\n\nUpdates `org.graalvm.js:js-language` from 25.0.3 to 25.1.3\n- [Release notes](https://github.com/graalvm/graaljs/releases)\n- [Changelog](https://github.com/oracle/graaljs/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/graalvm/graaljs/compare/vm-25.0.3...vm-25.1.3)\n\nUpdates `org.graalvm.truffle:truffle-runtime` from 25.0.3 to 25.1.3\n- [Release notes](https://github.com/oracle/graal/releases)\n- [Commits](https://github.com/oracle/graal/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.graalvm.js:js\n  dependency-version: 25.1.3\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n- dependency-name: org.graalvm.js:js-scriptengine\n  dependency-version: 25.1.3\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n- dependency-name: org.graalvm.js:js-language\n  dependency-version: 25.1.3\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n- dependency-name: org.graalvm.truffle:truffle-runtime\n  dependency-version: 25.1.3\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "961ac7fc87e11d5fc0bf0302b48713731ce0cdaf",
      "tree": "23f6e1b83369c565fa62ad03aa0f473e8c43647a",
      "parents": [
        "d9905d7b768679af438003c4a99509b56677144a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 01 01:08:10 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jul 01 01:08:10 2026 +0000"
      },
      "message": "Bump commons.bytebuddy.version from 1.18.8 to 1.18.10.\n"
    },
    {
      "commit": "d9905d7b768679af438003c4a99509b56677144a",
      "tree": "9d1cd921a9e754d59f8617346703b7bd3f047b24",
      "parents": [
        "85dc1c41b2acc6b055ae9cfccf347e0776c72eaa"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jun 30 20:51:06 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jun 30 20:51:06 2026 -0400"
      },
      "message": "Bump actions/setup-java from 5.3.0 to 5.4.0\n"
    },
    {
      "commit": "85dc1c41b2acc6b055ae9cfccf347e0776c72eaa",
      "tree": "57e8e53b1f96a130ec7a188d7138541a5fb10a90",
      "parents": [
        "51cd7e1ac42332b7dcadf565abfd90b1015676ca"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jun 30 14:05:47 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Jun 30 14:05:47 2026 +0000"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "51cd7e1ac42332b7dcadf565abfd90b1015676ca",
      "tree": "376366086f64e62b5203a39b530b3040eccdd41a",
      "parents": [
        "af9cca805c55f3901d3c904fa0e30cc0feda9457"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jun 29 07:30:54 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jun 29 07:30:54 2026 -0400"
      },
      "message": "Bump actions/cache from 6.0.0 to 6.1.0\n"
    },
    {
      "commit": "af9cca805c55f3901d3c904fa0e30cc0feda9457",
      "tree": "497813b394ad083d320f2449032ba3036e19c831",
      "parents": [
        "f6db25e32356b2e1fcaeeb8ec7100eee3342193b"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jun 27 12:51:50 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jun 27 12:51:50 2026 +0000"
      },
      "message": "Keep TextStringBuilder.reverse from splitting surrogate pairs (#756)."
    },
    {
      "commit": "f6db25e32356b2e1fcaeeb8ec7100eee3342193b",
      "tree": "8e07148f6f9ca87e269335558e03fe2ed6634320",
      "parents": [
        "5eb248529803f80174102807ef13eb6006666329"
      ],
      "author": {
        "name": "alhuda",
        "email": "50839256+alhudz@users.noreply.github.com",
        "time": "Sat Jun 27 18:20:52 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 27 08:50:52 2026 -0400"
      },
      "message": "Keep TextStringBuilder.reverse from splitting surrogate pairs (#756)"
    },
    {
      "commit": "5eb248529803f80174102807ef13eb6006666329",
      "tree": "8691f8d39d04b9b244a566bb3e5def1be973c1a9",
      "parents": [
        "f65ff30d4fdf373a083e3c3f931f479ca6eb3ef6"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 26 11:13:24 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 26 11:13:24 2026 +0000"
      },
      "message": "Fix WordUtils.containsAllWords missing words across line breaks (#754)."
    },
    {
      "commit": "f65ff30d4fdf373a083e3c3f931f479ca6eb3ef6",
      "tree": "4b146d13358d3739c8d23dc2d387763634335546",
      "parents": [
        "0c21b84c0bae469bbeb4ae0b8adebf7504df9458"
      ],
      "author": {
        "name": "alhuda",
        "email": "50839256+alhudz@users.noreply.github.com",
        "time": "Fri Jun 26 16:42:24 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 07:12:24 2026 -0400"
      },
      "message": "Fix WordUtils.containsAllWords missing words across line breaks (#754)"
    },
    {
      "commit": "0c21b84c0bae469bbeb4ae0b8adebf7504df9458",
      "tree": "be979f2d7352f9ed3d9e5d795f139e87ca5aee11",
      "parents": [
        "6e8da45562a715d264e4cb92373a10b2796dc8c6"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 26 11:11:12 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 26 11:11:12 2026 +0000"
      },
      "message": "Keep WordUtils.wrap from splitting a surrogate pair (#755)."
    },
    {
      "commit": "6e8da45562a715d264e4cb92373a10b2796dc8c6",
      "tree": "4bf09703790f731c079e9ec802204233f8ef9874",
      "parents": [
        "3d76dd3e5edc18b11f6b458b51bbf4869d0db01d"
      ],
      "author": {
        "name": "alhuda",
        "email": "50839256+alhudz@users.noreply.github.com",
        "time": "Fri Jun 26 16:39:46 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 07:09:46 2026 -0400"
      },
      "message": "Keep WordUtils.wrap from splitting a surrogate pair (#755)"
    },
    {
      "commit": "3d76dd3e5edc18b11f6b458b51bbf4869d0db01d",
      "tree": "9d601d9c65a655198783846b357cdecc83d88bef",
      "parents": [
        "1d6311618f4cf9c9088bc061dca25cf870f69ad9"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jun 25 18:24:57 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jun 25 18:24:57 2026 -0400"
      },
      "message": "Bump actions/cache from 5.0.5 to 6.0.0.\n"
    },
    {
      "commit": "1d6311618f4cf9c9088bc061dca25cf870f69ad9",
      "tree": "c265fc9427bd5e97e779b9fe9914d98efb3f1637",
      "parents": [
        "5ca16c7f06fe509b4c29cd4b55cfb5a486fc3340"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jun 22 07:33:07 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Jun 22 07:33:07 2026 -0400"
      },
      "message": "Bump actions/setup-java from 5.2.0 to 5.3.0\n"
    },
    {
      "commit": "5ca16c7f06fe509b4c29cd4b55cfb5a486fc3340",
      "tree": "a83e93baeae6847dfd65f927277abf178f77dbf9",
      "parents": [
        "6cff85b697dcf1090541433cf1cda85e36f001af"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 21 10:56:53 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 21 10:56:53 2026 +0000"
      },
      "message": "StringEscapeUtilsTest.testUnescapeCsvString(): Add test assertion from\nhttps://github.com/apache/commons-lang/pull/1723\n"
    },
    {
      "commit": "6cff85b697dcf1090541433cf1cda85e36f001af",
      "tree": "56c2c87d277ac207ab175c924e4408b570a3aac2",
      "parents": [
        "95a80fc24d4f787711ef69cfc1c967fd1057e073"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 19 07:29:09 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 19 07:29:09 2026 -0400"
      },
      "message": "Bump actions/checkout from 6.0.3 to 7.0.0.\n"
    },
    {
      "commit": "95a80fc24d4f787711ef69cfc1c967fd1057e073",
      "tree": "29b0596c4445edb73bfdd938bae5f6a5a1fdaa7b",
      "parents": [
        "370cca35d8993fb254590dab200e9894ebd54974"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 14 11:46:03 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 14 11:46:03 2026 +0000"
      },
      "message": "Internal refactoring\n"
    },
    {
      "commit": "370cca35d8993fb254590dab200e9894ebd54974",
      "tree": "0fe102906e2dc83482fcab9ecc7037bf7972033e",
      "parents": [
        "d79c73c440ffde31843e4540835235b7baf47102"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 14 11:42:22 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 14 11:42:22 2026 +0000"
      },
      "message": "Internal refactoring\n\nReduce vertical space\n"
    },
    {
      "commit": "d79c73c440ffde31843e4540835235b7baf47102",
      "tree": "4ebadc0f4189edc75a337667f4e32a1d1300bbbc",
      "parents": [
        "1b6f40363e765051c0ff1783a408dff5d64626fb"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 14 11:37:20 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 14 11:37:20 2026 +0000"
      },
      "message": "Sort members\n"
    },
    {
      "commit": "1b6f40363e765051c0ff1783a408dff5d64626fb",
      "tree": "43cfc8a69699137b464cece114e7992727ea17f1",
      "parents": [
        "63f201341248001752f534b94354200a2e8c45b2"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 14 11:32:34 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 14 11:32:34 2026 +0000"
      },
      "message": "Use locale-independent lower casing in CaseUtils, WordUtils, and\nStringLookupFactory (#753).\n"
    },
    {
      "commit": "63f201341248001752f534b94354200a2e8c45b2",
      "tree": "f34d5f42c886a14d0748980355ab9fe39d910aec",
      "parents": [
        "a8a2466dcec8a310f2246d189f4cc79ad67fb6f9"
      ],
      "author": {
        "name": "Javid Khan",
        "email": "dxbjavid@gmail.com",
        "time": "Sun Jun 14 16:59:10 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 07:29:10 2026 -0400"
      },
      "message": "Use locale-independent lowercasing in case conversion helpers (#753)\n\n* use locale-independent lowercasing in case conversion helpers\n\n* use junit pioneer @DefaultLocale to manage the default locale in tests\n\n* add locale-independent test for default string lookups parsing"
    },
    {
      "commit": "a8a2466dcec8a310f2246d189f4cc79ad67fb6f9",
      "tree": "8be52791d03781108b52e4ad3cfd24f3333e6c45",
      "parents": [
        "fa7c07550dd465a941081089d96ef99f9af8dec0"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 12 11:15:20 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 12 11:15:20 2026 +0000"
      },
      "message": "Refactor DamerauLevenshteinDistance and TextStringBuilder internals for\nduplication (#739).\n\n- Sort members\n- Reduce vertical whitespace\n"
    },
    {
      "commit": "fa7c07550dd465a941081089d96ef99f9af8dec0",
      "tree": "a6835488ef4615d132b82f0cf0d8d0065e13a742",
      "parents": [
        "e1301076d3809440faa8d0b1d60ee03cd37cab17"
      ],
      "author": {
        "name": "aaaZayne",
        "email": "1138069338@qq.com",
        "time": "Fri Jun 12 21:12:35 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 07:12:35 2026 -0400"
      },
      "message": "introduce private methods to remove clones (#739)"
    },
    {
      "commit": "e1301076d3809440faa8d0b1d60ee03cd37cab17",
      "tree": "a9dc3b1fdcaac9297c9341de9132205c6e3761f0",
      "parents": [
        "36f6fb6ca508d67e100986d0e65b66f719ce4322"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 12 02:13:24 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 12 02:13:24 2026 +0000"
      },
      "message": "Sort members.\n"
    },
    {
      "commit": "36f6fb6ca508d67e100986d0e65b66f719ce4322",
      "tree": "1d424a189c917db1759683c631c8ec97c2e5a651",
      "parents": [
        "85f4b3c5736231e14e517d110f4314965221a8d1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 12 02:08:37 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 12 02:08:37 2026 +0000"
      },
      "message": "Throw IllegalArgumentException for trailing whitespace in\nExtendedMessageFormat argument index (#750)."
    },
    {
      "commit": "85f4b3c5736231e14e517d110f4314965221a8d1",
      "tree": "f5e908b02ebbe7702015ccf5a5871b7d9a8782cb",
      "parents": [
        "fca08ed6d3acd157c79e1880dc50667c3a7bffbc"
      ],
      "author": {
        "name": "Javid Khan",
        "email": "dxbjavid@gmail.com",
        "time": "Fri Jun 12 07:34:40 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 22:04:40 2026 -0400"
      },
      "message": "Throw IllegalArgumentException for trailing whitespace in extendedmessageformat argument index (#750)"
    },
    {
      "commit": "fca08ed6d3acd157c79e1880dc50667c3a7bffbc",
      "tree": "ddfecadc9e66182aae68b0410472f0755295e931",
      "parents": [
        "cd89928c1e60b0d9f0a7412bd26a7ada42ceaee9"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jun 11 14:24:42 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jun 11 14:24:42 2026 -0400"
      },
      "message": "Update legacy GitHub links in CONTRIBUTING.md\n"
    },
    {
      "commit": "cd89928c1e60b0d9f0a7412bd26a7ada42ceaee9",
      "tree": "776e3164c5ccccea418ac8cbcda1bf6add8751e2",
      "parents": [
        "61e0c0b58a4e7cde166ba5ccfbc43a2411293d74"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jun 10 20:19:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jun 10 20:19:44 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-parent from 101 to 102.\n"
    },
    {
      "commit": "61e0c0b58a4e7cde166ba5ccfbc43a2411293d74",
      "tree": "d6bb061e24ef0d596a70012b2db3308d49ff4bf4",
      "parents": [
        "43d2c8f288e56cb747f504e30f856e779c6c82c5"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jun 10 20:16:49 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Jun 10 20:16:49 2026 -0400"
      },
      "message": "[TEXT-179] StringSubstitutor incorrectly removes the escape character in\n\"$${${a}\"\n"
    },
    {
      "commit": "43d2c8f288e56cb747f504e30f856e779c6c82c5",
      "tree": "1e30a431964925d20e3063e73049d63ccda6657e",
      "parents": [
        "c0d57f3fbeb3248a5eb80677de13d8239634e5bd"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Wed Jun 10 20:12:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 20:12:53 2026 -0400"
      },
      "message": "[TEXT-179] StringSubstitutor incorrectly removes the escape character in \"$${${a}\" (#752)"
    },
    {
      "commit": "c0d57f3fbeb3248a5eb80677de13d8239634e5bd",
      "tree": "72970c8dbf23ede317d2e082e3f8d59519a47cbd",
      "parents": [
        "07f8b31bc36a940ecd1743007d7e06cc54c1e273"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 07 10:11:49 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 07 10:11:49 2026 -0400"
      },
      "message": "Bump actions/dependency-review-action from 4.9.0 to 5.0.0\n"
    },
    {
      "commit": "07f8b31bc36a940ecd1743007d7e06cc54c1e273",
      "tree": "4293e0699a4f7599ce1858915126748a2dd46920",
      "parents": [
        "92c1eaada08f2cd099c9cbd4bec75d463001518c"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 07 10:06:46 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 07 10:06:46 2026 -0400"
      },
      "message": "Bump GH CI actions/checkout from 6.0.2 to 6.0.3\n"
    },
    {
      "commit": "92c1eaada08f2cd099c9cbd4bec75d463001518c",
      "tree": "cf1afbcd9239314e1b7724c98307acd829bf91e7",
      "parents": [
        "d93427d61d225d3f8025ece09a75f49f4d2f9b82"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 07 10:04:17 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 07 10:04:17 2026 -0400"
      },
      "message": "Add Java 26 and replace 26-ea with 27-ea in GH CI.\n"
    },
    {
      "commit": "d93427d61d225d3f8025ece09a75f49f4d2f9b82",
      "tree": "6b9e2a490f09c557b455e9945e7775a0e44551b3",
      "parents": [
        "e910b53a90308dbd70d54b4f69843805b53fc0fa"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 07 07:38:58 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Jun 07 07:38:58 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "e910b53a90308dbd70d54b4f69843805b53fc0fa",
      "tree": "86d1c75198747c8f3ff09dd44391bb2a84d177a2",
      "parents": [
        "225f74680554b1e36008312a18aaa3bdb0b5ae07"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jun 06 06:18:24 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Jun 06 06:18:24 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-parent from 100 to 101\n"
    },
    {
      "commit": "225f74680554b1e36008312a18aaa3bdb0b5ae07",
      "tree": "74eec986a5ddb6b1e43c957673c3495d32b8f2ea",
      "parents": [
        "50b108d331069a70d75b8fe110597bbe54a63662"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 05 07:29:00 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Jun 05 07:29:00 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.36.0 to 4.36.2\n"
    }
  ],
  "next": "50b108d331069a70d75b8fe110597bbe54a63662"
}
