tree b2a33b3d037b1522c353530af7095ffd647177af
parent df767ed7e2b8d307b53201279c06cdb920c88148
parent e3aca7b0b36f012f6898cfdffa00f6d0d4237a7d
author Matthias Benkard <code@mulk.eu> 1751609053 +0000
committer Matthias Benkard <code@mulk.eu> 1751609053 +0000

chore(deps): update all non-major dependencies (mulk/mulkcms2!58)

This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [flow-bin](https://github.com/flowtype/flow-bin) ([changelog](https://github.com/facebook/flow/blob/master/Changelog.md)) | devDependencies | minor | [`^0.247.0` -> `^0.274.0`](https://renovatebot.com/diffs/npm/flow-bin/0.247.1/0.274.2) |
| [org.postgresql:postgresql](https://jdbc.postgresql.org) ([source](https://github.com/pgjdbc/pgjdbc)) | build | patch | `42.7.4` -> `42.7.7` |
| [org.liquibase:liquibase-maven-plugin](http://www.liquibase.org/liquibase-maven-plugin) ([source](https://github.com/liquibase/liquibase)) | build | minor | `4.29.2` -> `4.32.0` |
| [org.jsoup:jsoup](https://jsoup.org/) ([source](https://github.com/jhy/jsoup)) | compile | minor | `1.18.1` -> `1.21.1` |
| [net.java.dev.jna:jna](https://github.com/java-native-access/jna) | compile | minor | `5.15.0` -> `5.17.0` |
| [io.hypersistence:hypersistence-utils-hibernate-70](https://github.com/vladmihalcea/hypersistence-utils) | compile | patch | `3.10.0` -> `3.10.1` |
| [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) | build | minor | `2.43.0` -> `2.44.5` |
| [org.apache.maven.plugins:maven-enforcer-plugin](https://maven.apache.org/enforcer/) | build | minor | `3.5.0` -> `3.6.0` |
| [org.apache.maven.plugins:maven-compiler-plugin](https://maven.apache.org/plugins/) | build | minor | `3.13.0` -> `3.14.0` |

---

### Release Notes

<details>
<summary>flowtype/flow-bin</summary>

### [`v0.274.2`](https://github.com/flowtype/flow-bin/compare/33ba0ae300fd36a997286443a4a3f7f00d2ff990...7a5fe2f081ffa9473e56e60208dda318f6a73ae0)

[Compare Source](https://github.com/flowtype/flow-bin/compare/33ba0ae300fd36a997286443a4a3f7f00d2ff990...7a5fe2f081ffa9473e56e60208dda318f6a73ae0)

### [`v0.274.1`](https://github.com/flowtype/flow-bin/compare/2e4378ae53b3c2d03450ac734fbf141600030848...33ba0ae300fd36a997286443a4a3f7f00d2ff990)

[Compare Source](https://github.com/flowtype/flow-bin/compare/2e4378ae53b3c2d03450ac734fbf141600030848...33ba0ae300fd36a997286443a4a3f7f00d2ff990)

### [`v0.274.0`](https://github.com/flowtype/flow-bin/compare/c5226c9da6b84d1f1ae5c1280acdf0a2e5f0c7ea...2e4378ae53b3c2d03450ac734fbf141600030848)

[Compare Source](https://github.com/flowtype/flow-bin/compare/c5226c9da6b84d1f1ae5c1280acdf0a2e5f0c7ea...2e4378ae53b3c2d03450ac734fbf141600030848)

### [`v0.273.1`](https://github.com/flowtype/flow-bin/compare/b27a083afa7efc0cc03ff7ac174dfd3a9c73ba26...c5226c9da6b84d1f1ae5c1280acdf0a2e5f0c7ea)

[Compare Source](https://github.com/flowtype/flow-bin/compare/b27a083afa7efc0cc03ff7ac174dfd3a9c73ba26...c5226c9da6b84d1f1ae5c1280acdf0a2e5f0c7ea)

### [`v0.272.2`](https://github.com/flowtype/flow-bin/compare/bbfb18b9fcb8c1bbc0739e20b39de812105b27c1...b27a083afa7efc0cc03ff7ac174dfd3a9c73ba26)

[Compare Source](https://github.com/flowtype/flow-bin/compare/bbfb18b9fcb8c1bbc0739e20b39de812105b27c1...b27a083afa7efc0cc03ff7ac174dfd3a9c73ba26)

### [`v0.272.1`](https://github.com/flowtype/flow-bin/compare/0d366a00476c657cd5d4c8526afd701a46743773...bbfb18b9fcb8c1bbc0739e20b39de812105b27c1)

[Compare Source](https://github.com/flowtype/flow-bin/compare/0d366a00476c657cd5d4c8526afd701a46743773...bbfb18b9fcb8c1bbc0739e20b39de812105b27c1)

### [`v0.272.0`](https://github.com/flowtype/flow-bin/compare/d8aeeaf50697d821bf78b07f9d589a0e8cf4a6e3...0d366a00476c657cd5d4c8526afd701a46743773)

[Compare Source](https://github.com/flowtype/flow-bin/compare/d8aeeaf50697d821bf78b07f9d589a0e8cf4a6e3...0d366a00476c657cd5d4c8526afd701a46743773)

### [`v0.271.0`](https://github.com/flowtype/flow-bin/compare/4f668224ae7a4315e6312483681ef1872cce947c...d8aeeaf50697d821bf78b07f9d589a0e8cf4a6e3)

[Compare Source](https://github.com/flowtype/flow-bin/compare/4f668224ae7a4315e6312483681ef1872cce947c...d8aeeaf50697d821bf78b07f9d589a0e8cf4a6e3)

### [`v0.270.0`](https://github.com/flowtype/flow-bin/compare/c6688e64f5ae24346ac8fcb8609ceb8b3f0b6651...4f668224ae7a4315e6312483681ef1872cce947c)

[Compare Source](https://github.com/flowtype/flow-bin/compare/c6688e64f5ae24346ac8fcb8609ceb8b3f0b6651...4f668224ae7a4315e6312483681ef1872cce947c)

### [`v0.269.1`](https://github.com/flowtype/flow-bin/compare/64d5dffc654a15f6f3eaa785ed5bf36695dcb945...c6688e64f5ae24346ac8fcb8609ceb8b3f0b6651)

[Compare Source](https://github.com/flowtype/flow-bin/compare/64d5dffc654a15f6f3eaa785ed5bf36695dcb945...c6688e64f5ae24346ac8fcb8609ceb8b3f0b6651)

### [`v0.268.0`](https://github.com/flowtype/flow-bin/compare/e5dc5e251ae5fd0ae33605c0ed54b1cb0b6497ab...64d5dffc654a15f6f3eaa785ed5bf36695dcb945)

[Compare Source](https://github.com/flowtype/flow-bin/compare/e5dc5e251ae5fd0ae33605c0ed54b1cb0b6497ab...64d5dffc654a15f6f3eaa785ed5bf36695dcb945)

### [`v0.267.0`](https://github.com/flowtype/flow-bin/compare/708e9da3ef8e0f689e7732bc5c3802c5328f439c...e5dc5e251ae5fd0ae33605c0ed54b1cb0b6497ab)

[Compare Source](https://github.com/flowtype/flow-bin/compare/708e9da3ef8e0f689e7732bc5c3802c5328f439c...e5dc5e251ae5fd0ae33605c0ed54b1cb0b6497ab)

### [`v0.266.1`](https://github.com/flowtype/flow-bin/compare/a25570aa69e2dd131822ab56e646216f62d6a292...708e9da3ef8e0f689e7732bc5c3802c5328f439c)

[Compare Source](https://github.com/flowtype/flow-bin/compare/a25570aa69e2dd131822ab56e646216f62d6a292...708e9da3ef8e0f689e7732bc5c3802c5328f439c)

### [`v0.266.0`](https://github.com/flowtype/flow-bin/compare/9fe14befd54421196889037d4b621f49cdaf01b3...a25570aa69e2dd131822ab56e646216f62d6a292)

[Compare Source](https://github.com/flowtype/flow-bin/compare/9fe14befd54421196889037d4b621f49cdaf01b3...a25570aa69e2dd131822ab56e646216f62d6a292)

### [`v0.265.3`](https://github.com/flowtype/flow-bin/compare/e35201f166ac73ab0c70c06e7eeed0f78dca5dc8...9fe14befd54421196889037d4b621f49cdaf01b3)

[Compare Source](https://github.com/flowtype/flow-bin/compare/e35201f166ac73ab0c70c06e7eeed0f78dca5dc8...9fe14befd54421196889037d4b621f49cdaf01b3)

### [`v0.265.2`](https://github.com/flowtype/flow-bin/compare/3310f3b42bd133f77e653f4b5b9ca2d01e7fe29a...e35201f166ac73ab0c70c06e7eeed0f78dca5dc8)

[Compare Source](https://github.com/flowtype/flow-bin/compare/3310f3b42bd133f77e653f4b5b9ca2d01e7fe29a...e35201f166ac73ab0c70c06e7eeed0f78dca5dc8)

### [`v0.265.1`](https://github.com/flowtype/flow-bin/compare/3d9eb6b987304f441ee93b370a5479e8a9fff99e...3310f3b42bd133f77e653f4b5b9ca2d01e7fe29a)

[Compare Source](https://github.com/flowtype/flow-bin/compare/3d9eb6b987304f441ee93b370a5479e8a9fff99e...3310f3b42bd133f77e653f4b5b9ca2d01e7fe29a)

### [`v0.265.0`](https://github.com/flowtype/flow-bin/compare/c27e9f2d3ecf4be334f568c16c5b67cc93cd8b00...3d9eb6b987304f441ee93b370a5479e8a9fff99e)

[Compare Source](https://github.com/flowtype/flow-bin/compare/c27e9f2d3ecf4be334f568c16c5b67cc93cd8b00...3d9eb6b987304f441ee93b370a5479e8a9fff99e)

### [`v0.264.0`](https://github.com/flowtype/flow-bin/compare/fbd62c263aa254b4ca01fdb8448add8ffc3ab56c...c27e9f2d3ecf4be334f568c16c5b67cc93cd8b00)

[Compare Source](https://github.com/flowtype/flow-bin/compare/fbd62c263aa254b4ca01fdb8448add8ffc3ab56c...c27e9f2d3ecf4be334f568c16c5b67cc93cd8b00)

### [`v0.263.0`](https://github.com/flowtype/flow-bin/compare/6f390f3e366c1957b3bfa15c8c5fa9096632b85c...fbd62c263aa254b4ca01fdb8448add8ffc3ab56c)

[Compare Source](https://github.com/flowtype/flow-bin/compare/6f390f3e366c1957b3bfa15c8c5fa9096632b85c...fbd62c263aa254b4ca01fdb8448add8ffc3ab56c)

### [`v0.262.0`](https://github.com/flowtype/flow-bin/compare/7cdf16d8cb583736effadd3f4540d899b06d440e...6f390f3e366c1957b3bfa15c8c5fa9096632b85c)

[Compare Source](https://github.com/flowtype/flow-bin/compare/7cdf16d8cb583736effadd3f4540d899b06d440e...6f390f3e366c1957b3bfa15c8c5fa9096632b85c)

### [`v0.261.2`](https://github.com/flowtype/flow-bin/compare/299a032cc037c8812dd49b449763bd81095c79b2...7cdf16d8cb583736effadd3f4540d899b06d440e)

[Compare Source](https://github.com/flowtype/flow-bin/compare/299a032cc037c8812dd49b449763bd81095c79b2...7cdf16d8cb583736effadd3f4540d899b06d440e)

### [`v0.261.1`](https://github.com/flowtype/flow-bin/compare/5aafae908cba444492ff0c1de9bf40467fee79c6...299a032cc037c8812dd49b449763bd81095c79b2)

[Compare Source](https://github.com/flowtype/flow-bin/compare/5aafae908cba444492ff0c1de9bf40467fee79c6...299a032cc037c8812dd49b449763bd81095c79b2)

### [`v0.261.0`](https://github.com/flowtype/flow-bin/compare/b630c2e7da76e983b0d7ca345ab6d6700f27d962...5aafae908cba444492ff0c1de9bf40467fee79c6)

[Compare Source](https://github.com/flowtype/flow-bin/compare/b630c2e7da76e983b0d7ca345ab6d6700f27d962...5aafae908cba444492ff0c1de9bf40467fee79c6)

### [`v0.260.0`](https://github.com/flowtype/flow-bin/compare/3ad8609ea1525aeac6e5ee8bd9fcd4a09ae2a7ea...b630c2e7da76e983b0d7ca345ab6d6700f27d962)

[Compare Source](https://github.com/flowtype/flow-bin/compare/3ad8609ea1525aeac6e5ee8bd9fcd4a09ae2a7ea...b630c2e7da76e983b0d7ca345ab6d6700f27d962)

### [`v0.259.1`](https://github.com/flowtype/flow-bin/compare/518e655dda4cb46c5eb0fc417d14f081c2d25278...3ad8609ea1525aeac6e5ee8bd9fcd4a09ae2a7ea)

[Compare Source](https://github.com/flowtype/flow-bin/compare/518e655dda4cb46c5eb0fc417d14f081c2d25278...3ad8609ea1525aeac6e5ee8bd9fcd4a09ae2a7ea)

### [`v0.259.0`](https://github.com/flowtype/flow-bin/compare/6b44f167cd16dcc6b8377ee7d423a88f3954e431...518e655dda4cb46c5eb0fc417d14f081c2d25278)

[Compare Source](https://github.com/flowtype/flow-bin/compare/6b44f167cd16dcc6b8377ee7d423a88f3954e431...518e655dda4cb46c5eb0fc417d14f081c2d25278)

### [`v0.258.1`](https://github.com/flowtype/flow-bin/compare/f896a24c4cd39c7b6d6b9d104e85d7e862e39008...6b44f167cd16dcc6b8377ee7d423a88f3954e431)

[Compare Source](https://github.com/flowtype/flow-bin/compare/f896a24c4cd39c7b6d6b9d104e85d7e862e39008...6b44f167cd16dcc6b8377ee7d423a88f3954e431)

### [`v0.258.0`](https://github.com/flowtype/flow-bin/compare/d56a9db81f6dc4e316f6f4b59109a1a6c366945c...f896a24c4cd39c7b6d6b9d104e85d7e862e39008)

[Compare Source](https://github.com/flowtype/flow-bin/compare/d56a9db81f6dc4e316f6f4b59109a1a6c366945c...f896a24c4cd39c7b6d6b9d104e85d7e862e39008)

### [`v0.257.1`](https://github.com/flowtype/flow-bin/compare/3833ba2e9c36486601a1171beb95dafc3fc1c46f...d56a9db81f6dc4e316f6f4b59109a1a6c366945c)

[Compare Source](https://github.com/flowtype/flow-bin/compare/3833ba2e9c36486601a1171beb95dafc3fc1c46f...d56a9db81f6dc4e316f6f4b59109a1a6c366945c)

### [`v0.257.0`](https://github.com/flowtype/flow-bin/compare/9df2d7ee45fe23bc13c291219f6d1d6fc5d8c7b8...3833ba2e9c36486601a1171beb95dafc3fc1c46f)

[Compare Source](https://github.com/flowtype/flow-bin/compare/9df2d7ee45fe23bc13c291219f6d1d6fc5d8c7b8...3833ba2e9c36486601a1171beb95dafc3fc1c46f)

### [`v0.256.0`](https://github.com/flowtype/flow-bin/compare/b2ef58cbb402e249bc1560f07de5a9f57c82abaf...9df2d7ee45fe23bc13c291219f6d1d6fc5d8c7b8)

[Compare Source](https://github.com/flowtype/flow-bin/compare/b2ef58cbb402e249bc1560f07de5a9f57c82abaf...9df2d7ee45fe23bc13c291219f6d1d6fc5d8c7b8)

### [`v0.255.0`](https://github.com/flowtype/flow-bin/compare/e96e0c0d2cf36253d00e6bd912878721f75ae075...b2ef58cbb402e249bc1560f07de5a9f57c82abaf)

[Compare Source](https://github.com/flowtype/flow-bin/compare/e96e0c0d2cf36253d00e6bd912878721f75ae075...b2ef58cbb402e249bc1560f07de5a9f57c82abaf)

### [`v0.254.2`](https://github.com/flowtype/flow-bin/compare/5d4eb96414b2e91aa5c6ffa354fa659e7441d50c...e96e0c0d2cf36253d00e6bd912878721f75ae075)

[Compare Source](https://github.com/flowtype/flow-bin/compare/5d4eb96414b2e91aa5c6ffa354fa659e7441d50c...e96e0c0d2cf36253d00e6bd912878721f75ae075)

### [`v0.254.1`](https://github.com/flowtype/flow-bin/compare/386571a737c6bca83c572792b831f2dd0a678aca...5d4eb96414b2e91aa5c6ffa354fa659e7441d50c)

[Compare Source](https://github.com/flowtype/flow-bin/compare/386571a737c6bca83c572792b831f2dd0a678aca...5d4eb96414b2e91aa5c6ffa354fa659e7441d50c)

### [`v0.254.0`](https://github.com/flowtype/flow-bin/compare/2d1ed3757222da01719fd00cf3058827257a3705...386571a737c6bca83c572792b831f2dd0a678aca)

[Compare Source](https://github.com/flowtype/flow-bin/compare/2d1ed3757222da01719fd00cf3058827257a3705...386571a737c6bca83c572792b831f2dd0a678aca)

### [`v0.253.0`](https://github.com/flowtype/flow-bin/compare/8f3f2d6a92e8eadd4ef53d0732f1d5eeee2226dc...2d1ed3757222da01719fd00cf3058827257a3705)

[Compare Source](https://github.com/flowtype/flow-bin/compare/8f3f2d6a92e8eadd4ef53d0732f1d5eeee2226dc...2d1ed3757222da01719fd00cf3058827257a3705)

### [`v0.252.0`](https://github.com/flowtype/flow-bin/compare/f1169c6f6df9fa1cbe08606ade5b8d23fb424a60...8f3f2d6a92e8eadd4ef53d0732f1d5eeee2226dc)

[Compare Source](https://github.com/flowtype/flow-bin/compare/f1169c6f6df9fa1cbe08606ade5b8d23fb424a60...8f3f2d6a92e8eadd4ef53d0732f1d5eeee2226dc)

### [`v0.251.1`](https://github.com/flowtype/flow-bin/compare/c50c846ca6cb6d103c6e7318632244b2b6624d4e...f1169c6f6df9fa1cbe08606ade5b8d23fb424a60)

[Compare Source](https://github.com/flowtype/flow-bin/compare/c50c846ca6cb6d103c6e7318632244b2b6624d4e...f1169c6f6df9fa1cbe08606ade5b8d23fb424a60)

### [`v0.251.0`](https://github.com/flowtype/flow-bin/compare/41582c84f5e3d9a32a8e541fc1838d4970bb7662...c50c846ca6cb6d103c6e7318632244b2b6624d4e)

[Compare Source](https://github.com/flowtype/flow-bin/compare/41582c84f5e3d9a32a8e541fc1838d4970bb7662...c50c846ca6cb6d103c6e7318632244b2b6624d4e)

### [`v0.250.0`](https://github.com/flowtype/flow-bin/compare/030d7cfba9f871614103f556b1ac3a37879fc534...41582c84f5e3d9a32a8e541fc1838d4970bb7662)

[Compare Source](https://github.com/flowtype/flow-bin/compare/030d7cfba9f871614103f556b1ac3a37879fc534...41582c84f5e3d9a32a8e541fc1838d4970bb7662)

### [`v0.249.0`](https://github.com/flowtype/flow-bin/compare/7f53cc6aa8cdc6e1dde4223a9931edb7ea8d5bd8...030d7cfba9f871614103f556b1ac3a37879fc534)

[Compare Source](https://github.com/flowtype/flow-bin/compare/7f53cc6aa8cdc6e1dde4223a9931edb7ea8d5bd8...030d7cfba9f871614103f556b1ac3a37879fc534)

### [`v0.248.1`](https://github.com/flowtype/flow-bin/compare/e6851f8e9052be7d582f32ed0b7755784f0d5d88...7f53cc6aa8cdc6e1dde4223a9931edb7ea8d5bd8)

[Compare Source](https://github.com/flowtype/flow-bin/compare/e6851f8e9052be7d582f32ed0b7755784f0d5d88...7f53cc6aa8cdc6e1dde4223a9931edb7ea8d5bd8)

### [`v0.248.0`](https://github.com/flowtype/flow-bin/compare/70454fda20bc6aedf0824bdc85b97b47f2e5f8a2...e6851f8e9052be7d582f32ed0b7755784f0d5d88)

[Compare Source](https://github.com/flowtype/flow-bin/compare/70454fda20bc6aedf0824bdc85b97b47f2e5f8a2...e6851f8e9052be7d582f32ed0b7755784f0d5d88)

</details>

<details>
<summary>pgjdbc/pgjdbc</summary>

### [`v42.7.7`](https://github.com/pgjdbc/pgjdbc/blob/HEAD/CHANGELOG.md#&#8203;4277-2025-06-10)

##### Security

-   security: **Client Allows Fallback to Insecure Authentication Despite channelBinding=require configuration.**
    Fix `channel binding required` handling to reject non-SASL authentication
    Previously, when channel binding was set to "require", the driver would silently ignore this
    requirement for non-SASL authentication methods. This could lead to a false sense of security
    when channel binding was explicitly requested but not actually enforced. The fix ensures that when
    channel binding is set to "require", the driver will reject connections that use
    non-SASL authentication methods or when SASL authentication has not completed properly.
    See the [Security Advisory](https://github.com/pgjdbc/pgjdbc/security/advisories/GHSA-hq9p-pm7w-8p54) for more detail. Reported by [George MacKerron](https://github.com/jawj)
    The following [CVE-2025-49146](https://nvd.nist.gov/vuln/detail/CVE-2025-49146) has been issued

##### Added

-   test: Added ChannelBindingRequiredTest to verify proper behavior of channel binding settings

### [`v42.7.6`](https://github.com/pgjdbc/pgjdbc/blob/HEAD/CHANGELOG.md#&#8203;4276)

##### Features

-   fix: Enhanced DatabaseMetadata.getIndexInfo() method, added index comment as REMARKS property [MR #&#8203;3513](https://github.com/pgjdbc/pgjdbc/pull/3513)

##### Performance Improvements

-   performance: Improve ResultSetMetadata.fetchFieldMetaData by using IN row values instead of UNION ALL for improved query performance (later reverted) [MR #&#8203;3510](https://github.com/pgjdbc/pgjdbc/pull/3510)
-   feat:Use a single simple query for all startup parameters, so groupStartupParameters is no longer needed  [MR #&#8203;3613](https://github.com/pgjdbc/pgjdbc/pull/3613)
-

### [`v42.7.5`](https://github.com/pgjdbc/pgjdbc/blob/HEAD/CHANGELOG.md#&#8203;4275-2025-01-14-080000--0400)

##### Added

-   ci: Test with Java 23  [MR #&#8203;3381](https://github.com/pgjdbc/pgjdbc/pull/3381)

##### Fixed

-   regression: revert change in [`fc60537`](https://github.com/pgjdbc/pgjdbc/commit/fc60537) [MR #&#8203;3476](https://github.com/pgjdbc/pgjdbc/pull/3476)
-   fix: PgDatabaseMetaData implementation of catalog as param and return value [MR #&#8203;3390](https://github.com/pgjdbc/pgjdbc/pull/3390)
-   fix: Support default GSS credentials in the Java Postgres client [MR #&#8203;3451](https://github.com/pgjdbc/pgjdbc/pull/3451)
-   fix: return only the transactions accessible by the current_user in XAResource.recover [MR #&#8203;3450](https://github.com/pgjdbc/pgjdbc/pull/3450)
-   feat: don't force send extra_float_digits for PostgreSQL >= 12 fix [Issue #&#8203;3432](https://github.com/pgjdbc/pgjdbc/issues/3432)  [MR #&#8203;3446](https://github.com/pgjdbc/pgjdbc/pull/3446)
-   fix: exclude "include columns" from the list of primary keys [MR #&#8203;3434](https://github.com/pgjdbc/pgjdbc/pull/3434)
-   perf: Enhance the meta query performance by specifying the oid. [MR #&#8203;3427](https://github.com/pgjdbc/pgjdbc/pull/3427)
-   feat: support getObject(int, byte\[].class) for bytea [MR #&#8203;3274](https://github.com/pgjdbc/pgjdbc/pull/3274)
-   docs: document infinity and some minor edits [MR #&#8203;3407](https://github.com/pgjdbc/pgjdbc/pull/3407)
-   fix: Added way to check for major server version, fixed check for RULE [MR #&#8203;3402](https://github.com/pgjdbc/pgjdbc/pull/3402)
-   docs: fixed remaining paragraphs [MR #&#8203;3398](https://github.com/pgjdbc/pgjdbc/pull/3398)
-   docs: fixed paragraphs in javadoc comments  [MR #&#8203;3397](https://github.com/pgjdbc/pgjdbc/pull/3397)
-   fix: Reuse buffers and reduce allocations in GSSInputStream addresses [Issue #&#8203;3251](https://github.com/pgjdbc/pgjdbc/issues/3251) [MR #&#8203;3255](https://github.com/pgjdbc/pgjdbc/pull/3255)
-   chore: Update Gradle to 8.10.2 [MR #&#8203;3388](https://github.com/pgjdbc/pgjdbc/pull/3388)
-   fix: getSchemas() [MR #&#8203;3386](https://github.com/pgjdbc/pgjdbc/pull/3386)
-   fix: Update rpm postgresql-jdbc.spec.tpl with scram-client [MR #&#8203;3324](https://github.com/pgjdbc/pgjdbc/pull/3324)
-   fix: Clearing thisRow and rowBuffer on close() of ResultSet [Issue #&#8203;3383](https://github.com/pgjdbc/pgjdbc/issues/3383) [MR #&#8203;3384](https://github.com/pgjdbc/pgjdbc/pull/3384)
-   fix: Package was renamed to maven-bundle-plugin [MR #&#8203;3382](https://github.com/pgjdbc/pgjdbc/pull/3382)
-   fix: As of version 18 the RULE privilege has been removed [MR #&#8203;3378](https://github.com/pgjdbc/pgjdbc/pull/3378)
-   fix: use buffered inputstream to create GSSInputStream [MR #&#8203;3373](https://github.com/pgjdbc/pgjdbc/pull/3373)
-   test: get rid of 8.4, 9.0 pg versions and use >= jdk version 17 [MR #&#8203;3372](https://github.com/pgjdbc/pgjdbc/pull/3372)
-   Changed docker-compose version and renamed script file in instructions to match the real file name [MR #&#8203;3363](https://github.com/pgjdbc/pgjdbc/pull/3363)
-   test:Do not assume "test" database in DatabaseMetaDataTransactionIsolationTest [MR #&#8203;3364](https://github.com/pgjdbc/pgjdbc/pull/3364)
-   try to categorize dependencies [MR #&#8203;3362](https://github.com/pgjdbc/pgjdbc/pull/3362)

</details>

<details>
<summary>liquibase/liquibase</summary>

### [`v4.32.0`](https://github.com/liquibase/liquibase/blob/HEAD/changelog.txt#Liquibase-4320-is-a-major-release)

[Compare Source](https://github.com/liquibase/liquibase/compare/v4.31.1...v4.32.0)

See the [Liquibase 4.32.0 Release Notes](https://docs.liquibase.com/start/release-notes/liquibase-release-notes/liquibase-4.32.0.html) for the complete set of release information.

### [`v4.31.1`](https://github.com/liquibase/liquibase/blob/HEAD/changelog.txt#Liquibase-4311-is-a-patch-release)

[Compare Source](https://github.com/liquibase/liquibase/compare/v4.31.0...v4.31.1)

> \[!IMPORTANT]
> Liquibase 4.31.1 patches vulnerability found in Snowlake driver (CVE-2025-24789) and resolves issue with include and logicalfilepath reported in 4.31.0 (see 4.31.0 Release Notes)

> \[!NOTE]
> See the [Liquibase 4.31.1 Release Notes](https://docs.liquibase.com/start/release-notes/liquibase-release-notes/liquibase-4.31.1.html) for the complete set of release information.

### [`v4.31.0`](https://github.com/liquibase/liquibase/blob/HEAD/changelog.txt#Liquibase-4310-is-a-major-release)

[Compare Source](https://github.com/liquibase/liquibase/compare/v4.30.0...v4.31.0)

> \[!NOTE]
> See the [Liquibase 4.31.0 Release Notes](https://docs.liquibase.com/start/release-notes/liquibase-release-notes/liquibase-4.31.0.html) for the complete set of release information.

### [`v4.30.0`](https://github.com/liquibase/liquibase/blob/HEAD/changelog.txt#Liquibase-4300-is-a-major-release)

[Compare Source](https://github.com/liquibase/liquibase/compare/v4.29.2...v4.30.0)

> \[!IMPORTANT]
> Liquibase 4.30.0 contains new capabilities and notable enhancements for Liquibase OSS and Pro users including Anonymous Analytics and deprecation of the MacOS dmg installer.
> \[!NOTE]
> See the [Liquibase 4.30.0 Release Notes](https://docs.liquibase.com/start/release-notes/liquibase-release-notes/liquibase-4.30.0.html) for the complete set of release information.

</details>

<details>
<summary>jhy/jsoup</summary>

### [`v1.21.1`](https://github.com/jhy/jsoup/blob/HEAD/CHANGES.md#&#8203;1211-2025-Jun-23)

##### Changes

-   Removed previously deprecated methods. [#&#8203;2317](https://github.com/jhy/jsoup/pull/2317)
-   Deprecated the `:matchText` pseduo-selector due to its side effects on the DOM; use the new `::textnode` selector and the `Element#selectNodes(String css, Class type)` method instead. [#&#8203;2343](https://github.com/jhy/jsoup/pull/2343)
-   Deprecated `Connection.Response#bufferUp()` in lieu of `Connection.Response#readFully()` which can throw a checked IOException.
-   Deprecated internal methods `Validate#ensureNotNull` (replaced by typed `Validate#expectNotNull`); protected HTML appenders from Attribute and Node.
-   If you happen to be using any of the deprecated methods, please take the opportunity now to migrate away from them, as they will be removed in a future release.

##### Improvements

-   Enhanced the `Selector` to support direct matching against nodes such as comments and text nodes. For example, you can now find an element that follows a specific comment: `::comment:contains(prices) + p` will select `p` elements immediately after a `<!-- prices: -->` comment. Supported types include `::node`, `::leafnode`, `::comment`, `::text`, `::data`, and `::cdata`. Node contextual selectors like `::node:contains(text)`, `:matches(regex)`, and `:blank` are also supported. Introduced `Element#selectNodes(String css)` and `Element#selectNodes(String css, Class nodeType)` for direct node selection. [#&#8203;2324](https://github.com/jhy/jsoup/pull/2324)
-   Added `TagSet#onNewTag(Consumer<Tag> customizer)`: register a callback that’s invoked for each new or cloned Tag when it’s inserted into the set. Enables dynamic tweaks of tag options (for example, marking all custom tags as self-closing, or everything in a given namespace as preserving whitespace).
-   Made `TokenQueue` and `CharacterReader` autocloseable, to ensure that they will release their buffers back to the buffer pool, for later reuse.
-   Added `Selector#evaluatorOf(String css)`, as a clearer way to obtain an Evaluator from a CSS query. An alias of `QueryParser.parse(String css)`.
-   Custom tags (defined via the `TagSet`) in a foreign namespace (e.g. SVG) can be configured to parse as data tags.
-   Added `NodeVisitor#traverse(Node)` to simplify node traversal calls (vs. importing `NodeTraversor`).
-   Updated the default user-agent string to improve compatibility. [#&#8203;2341](https://github.com/jhy/jsoup/issues/2341)
-   The HTML parser now allows the specific text-data type (Data, RcData) to be customized for known tags. (Previously, that was only supported on custom tags.) [#&#8203;2326](https://github.com/jhy/jsoup/issues/2326).
-   Added `Connection#readFully()` as a replacement for `Connection#bufferUp()` with an explicit IOException. Similarly, added `Connection#readBody()` over `Connection#body()`. Deprecated `Connection#bufferUp()`. [#&#8203;2327](https://github.com/jhy/jsoup/pull/2327)
-   When serializing HTML, the `<` and `>` characters are now escaped in attributes. This helps prevent a class of mutation XSS attacks. [#&#8203;2337](https://github.com/jhy/jsoup/pull/2337)
-   Changed `Connection` to prefer using the JDK's HttpClient over HttpUrlConnection, if available, to enable HTTP/2 support by default. Users can disable via `-Djsoup.useHttpClient=false`. [#&#8203;2340](https://github.com/jhy/jsoup/pull/2340)

##### Bug Fixes

-   The contents of a `script` in a `svg` foreign context should be parsed as script data, not text. [#&#8203;2320](https://github.com/jhy/jsoup/issues/2320)
-   `Tag#isFormSubmittable()` was updating the Tag's options. [#&#8203;2323](https://github.com/jhy/jsoup/issues/2323)
-   The HTML pretty-printer would incorrectly trim whitespace when text followed an inline element in a block element. [#&#8203;2325](https://github.com/jhy/jsoup/issues/2325)
-   Custom tags with hyphens or other non-letter characters in their names now work correctly as Data or RcData tags. Their closing tags are now tokenized properly. [#&#8203;2332](https://github.com/jhy/jsoup/issues/2332)
-   When cloning an Element, the clone would retain the source's cached child Element list (if any), which could lead to incorrect results when modifying the clone's child elements. [#&#8203;2334](https://github.com/jhy/jsoup/issues/2334)

### [`v1.20.1`](https://github.com/jhy/jsoup/blob/HEAD/CHANGES.md#&#8203;1201-2025-Apr-29)

##### Changes

-   To better follow the HTML5 spec and current browsers, the HTML parser no longer allows self-closing tags (`<foo />`)
    to close HTML elements by default. Foreign content (SVG, MathML), and content parsed with the XML parser, still
    supports self-closing tags. If you need specific HTML tags to support self-closing, you can register a custom tag via
    the `TagSet` configured in `Parser.tagSet()`, using `Tag#set(Tag.SelfClose)`. Standard void tags (such as `<img>`,
    `<br>`, etc.) continue to behave as usual and are not affected by this
    change. [#&#8203;2300](https://github.com/jhy/jsoup/issues/2300).
-   The following internal components have been **deprecated**. If you do happen to be using any of these, please take the opportunity now to migrate away from them, as they will be removed in jsoup 1.21.1.
    -   `ChangeNotifyingArrayList`, `Document.updateMetaCharsetElement()`, `Document.updateMetaCharsetElement(boolean)`, `HtmlTreeBuilder.isContentForTagData(String)`, `Parser.isContentForTagData(String)`, `Parser.setTreeBuilder(TreeBuilder)`, `Tag.formatAsBlock()`, `Tag.isFormListed()`, `TokenQueue.addFirst(String)`, `TokenQueue.chompTo(String)`, `TokenQueue.chompToIgnoreCase(String)`, `TokenQueue.consumeToIgnoreCase(String)`, `TokenQueue.consumeWord()`, `TokenQueue.matchesAny(String...)`

##### Functional Improvements

-   Rebuilt the HTML pretty-printer, to simplify and consolidate the implementation, improve consistency, support custom
    Tags, and provide a cleaner path for ongoing improvements. The specific HTML produced by the pretty-printer may be
    different from previous versions. [#&#8203;2286](https://github.com/jhy/jsoup/issues/2286).
-   Added the ability to define custom tags, and to modify properties of known tags, via the `TagSet` tag collection.
    Their properties can impact both the parse and how content is
    serialized (output as HTML or XML). [#&#8203;2285](https://github.com/jhy/jsoup/issues/2285).
-   `Element.cssSelector()` will prefer to return shorter selectors by using ancestor IDs when available and unique. E.g.
    `#id > div > p` instead of  `html > body > div > div > p` [#&#8203;2283](https://github.com/jhy/jsoup/pull/2283).
-   Added `Elements.deselect(int index)`, `Elements.deselect(Object o)`, and `Elements.deselectAll()` methods to remove
    elements from the `Elements` list without removing them from the underlying DOM. Also added `Elements.asList()` method
    to get a modifiable list of elements without affecting the DOM. (Individual Elements remain linked to the
    DOM.) [#&#8203;2100](https://github.com/jhy/jsoup/issues/2100).
-   Added support for sending a request body from an InputStream with
    `Connection.requestBodyStream(InputStream stream)`. [#&#8203;1122](https://github.com/jhy/jsoup/issues/1122).
-   The XML parser now supports scoped xmlns: prefix namespace declarations, and applies the correct namespace to Tags and
    Attributes. Also, added `Tag#prefix()`, `Tag#localName()`, `Attribute#prefix()`, `Attribute#localName()`, and
    `Attribute#namespace()` to retrieve these. [#&#8203;2299](https://github.com/jhy/jsoup/issues/2299).
-   CSS identifiers are now escaped and unescaped correctly to the CSS spec. `Element#cssSelector()` will emit
    appropriately escaped selectors, and the QueryParser supports those. Added `Selector.escapeCssIdentifier()` and
    `Selector.unescapeCssIdentifier()`. [#&#8203;2297](https://github.com/jhy/jsoup/pull/2297), [#&#8203;2305](https://github.com/jhy/jsoup/pull/2305)

##### Structure and Performance Improvements

-   Refactored the CSS `QueryParser` into a clearer recursive descent
    parser. [#&#8203;2310](https://github.com/jhy/jsoup/pull/2310).
-   CSS selectors with consecutive combinators (e.g. `div >> p`) will throw an explicit parse
    exception. [#&#8203;2311](https://github.com/jhy/jsoup/pull/2311).
-   Performance: reduced the shallow size of an Element from 40 to 32 bytes, and the NodeList from 32 to 24.
    [#&#8203;2307](https://github.com/jhy/jsoup/pull/2307).
-   Performance: reduced GC load of new StringBuilders when tokenizing input
    HTML. [#&#8203;2304](https://github.com/jhy/jsoup/pull/2304).
-   Made `Parser` instances threadsafe, so that inadvertent use of the same instance across threads will not lead to
    errors. For actual concurrency, use `Parser#newInstance()` per
    thread. [#&#8203;2314](https://github.com/jhy/jsoup/pull/2314).

##### Bug Fixes

-   Element names containing characters invalid in XML are now normalized to valid XML names when
    serializing. [#&#8203;1496](https://github.com/jhy/jsoup/issues/1496).
-   When serializing to XML, characters that are invalid in XML 1.0 should be removed (not
    encoded). [#&#8203;1743](https://github.com/jhy/jsoup/issues/1743).
-   When converting a `Document` to the W3C DOM in `W3CDom`, elements with an attribute in an undeclared namespace now
    get a declaration of `xmlns:prefix="undefined"`. This allows subsequent serialization to XML via `W3CDom.asString()`
    to succeed. [#&#8203;2087](https://github.com/jhy/jsoup/issues/2087).
-   The `StreamParser` could emit the final elements of a document twice, due to how `onNodeCompleted` was fired when closing out the stack. [#&#8203;2295](https://github.com/jhy/jsoup/issues/2295).
-   When parsing with the XML parser and error tracking enabled, the trailing `?` in `<?xml version="1.0"?>` would
    incorrectly emit an error. [#&#8203;2298](https://github.com/jhy/jsoup/issues/2298).
-   Calling `Element#cssSelector()` on an element with combining characters in the class or ID now produces the correct output. [#&#8203;1984](https://github.com/jhy/jsoup/issues/1984).

### [`v1.19.1`](https://github.com/jhy/jsoup/blob/HEAD/CHANGES.md#&#8203;1191-2025-Mar-04)

##### Changes

-   Added support for **http/2** requests in `Jsoup.connect()`, when running on Java 11+, via the Java HttpClient
    implementation. [#&#8203;2257](https://github.com/jhy/jsoup/pull/2257).
    -   In this version of jsoup, the default is to make requests via the HttpUrlConnection implementation: use
        **`System.setProperty("jsoup.useHttpClient", "true");`** to enable making requests via the HttpClient instead ,
        which will enable http/2 support, if available. This will become the default in a later version of jsoup, so now is
        a good time to validate it.
    -   If you are repackaging the jsoup jar in your deployment (i.e. creating a shaded- or a fat-jar), make sure to specify
        that as a Multi-Release
        JAR.
    -   If the `HttpClient` impl is not available in your JRE, requests will continue to be made via
        `HttpURLConnection` (in `http/1.1` mode).
-   Updated the minimum Android API Level validation from 10 to **21**. As with previous jsoup versions, Android
    developers need to enable core library desugaring. The minimum Java version remains Java 8.
    [#&#8203;2173](https://github.com/jhy/jsoup/pull/2173)
-   Removed previously deprecated class: `org.jsoup.UncheckedIOException` (replace with `java.io.UncheckedIOException`);
    moved previously deprecated method `Element Element#forEach(Consumer)` to
    `void Element#forEach(Consumer())`. [#&#8203;2246](https://github.com/jhy/jsoup/pull/2246)
-   Deprecated the methods `Document#updateMetaCharsetElement(boolean)` and `Document#updateMetaCharsetElement()`, as the
    setting had no effect. When `Document#charset(Charset)` is called, the document's meta charset or XML encoding
    instruction is always set. [#&#8203;2247](https://github.com/jhy/jsoup/pull/2247)

##### Improvements

-   When cleaning HTML with a `Safelist` that preserves relative links, the `isValid()` method will now consider these
    links valid. Additionally, the enforced attribute `rel=nofollow` will only be added to external links when configured
    in the safelist. [#&#8203;2245](https://github.com/jhy/jsoup/pull/2245)
-   Added `Element#selectStream(String query)` and `Element#selectStream(Evaluator)` methods, that return a `Stream` of
    matching elements. Elements are evaluated and returned as they are found, and the stream can be
    terminated early. [#&#8203;2092](https://github.com/jhy/jsoup/pull/2092)
-   `Element` objects now implement `Iterable`, enabling them to be used in enhanced for loops.
-   Added support for fragment parsing from a `Reader` via
    `Parser#parseFragmentInput(Reader, Element, String)`. [#&#8203;1177](https://github.com/jhy/jsoup/issues/1177)
-   Reintroduced CLI executable examples, in `jsoup-examples.jar`. [#&#8203;1702](https://github.com/jhy/jsoup/issues/1702)
-   Optimized performance of selectors like `#id .class` (and other similar descendant queries) by around 4.6x, by better
    balancing the Ancestor evaluator's cost function in the query
    planner. [#&#8203;2254](https://github.com/jhy/jsoup/issues/2254)
-   Removed the legacy parsing rules for `<isindex>` tags, which would autovivify a `form` element with labels. This is no
    longer in the spec.
-   Added `Elements.selectFirst(String cssQuery)` and `Elements.expectFirst(String cssQuery)`, to select the first
    matching element from an `Elements` list.  [#&#8203;2263](https://github.com/jhy/jsoup/pull/2263/)
-   When parsing with the XML parser, XML Declarations and Processing Instructions are directly handled, vs bouncing
    through the HTML parser's bogus comment handler. Serialization for non-doctype declarations no longer end with a
    spurious `!`. [#&#8203;2275](https://github.com/jhy/jsoup/pull/2275)
-   When converting parsed HTML to XML or the W3C DOM, element names containing `<` are normalized to `_` to ensure valid
    XML. For example, `<foo<bar>` becomes `<foo_bar>`, as XML does not allow `<` in element names, but HTML5
    does. [#&#8203;2276](https://github.com/jhy/jsoup/pull/2276)
-   Reimplemented the HTML5 Adoption Agency Algorithm to the current spec. This handles mis-nested formating / structural elements. [#&#8203;2278](https://github.com/jhy/jsoup/pull/2278)

##### Bug Fixes

-   If an element has an `;` in an attribute name, it could not be converted to a W3C DOM element, and so subsequent XPath
    queries could miss that element. Now, the attribute name is more completely
    normalized. [#&#8203;2244](https://github.com/jhy/jsoup/issues/2244)
-   For backwards compatibility, reverted the internal attribute key for doctype names to
    "name". [#&#8203;2241](https://github.com/jhy/jsoup/issues/2241)
-   In `Connection`, skip cookies that have no name, rather than throwing a validation
    exception. [#&#8203;2242](https://github.com/jhy/jsoup/issues/2242)
-   When running on JDK 1.8, the error `java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;`
    could be thrown when calling `Response#body()` after parsing from a URL and the buffer size was
    exceeded. [#&#8203;2250](https://github.com/jhy/jsoup/pull/2250)
-   For backwards compatibility, allow `null` InputStream inputs to `Jsoup.parse(InputStream stream, ...)`, by returning
    an empty `Document`. [#&#8203;2252](https://github.com/jhy/jsoup/issues/2252)
-   A `template` tag containing an `li` within an open `li` would be parsed incorrectly, as it was not recognized as a
    "special" tag (which have additional processing rules). Also, added the SVG and MathML namespace tags to the list of
    special tags. [#&#8203;2258](https://github.com/jhy/jsoup/issues/2258)
-   A `template` tag containing a `button` within an open `button` would be parsed incorrectly, as the "in button scope"
    check was not aware of the `template` element. Corrected other instances including MathML and SVG elements,
    also. [#&#8203;2271](https://github.com/jhy/jsoup/issues/2271)
-   An `:nth-child` selector with a negative digit-less step, such as `:nth-child(-n+2)`, would be parsed incorrectly as a
    positive step, and so would not match as expected. [#&#8203;1147](https://github.com/jhy/jsoup/issues/1147)
-   Calling `doc.charset(charset)` on an empty XML document would throw an
    `IndexOutOfBoundsException`. [#&#8203;2266](https://github.com/jhy/jsoup/issues/2266)
-   Fixed a memory leak when reusing a nested `StructuralEvaluator` (e.g., a selector ancestor chain like `A B C`) by
    ensuring cache reset calls cascade to inner members. [#&#8203;2277](https://github.com/jhy/jsoup/issues/2277)
-   Concurrent calls to `doc.clone().append(html)` were not supported. When a document was cloned, its `Parser` was not cloned but was a shallow copy of the original parser. [#&#8203;2281](https://github.com/jhy/jsoup/issues/2281)

### [`v1.18.3`](https://github.com/jhy/jsoup/blob/HEAD/CHANGES.md#&#8203;1183-2024-Dec-02)

##### Bug Fixes

-   When serializing to XML, attribute names containing `-`, `.`, or digits were incorrectly marked as invalid and
    removed. [2235](https://github.com/jhy/jsoup/issues/2235)

### [`v1.18.2`](https://github.com/jhy/jsoup/blob/HEAD/CHANGES.md#&#8203;1182-2024-Nov-27)

##### Improvements

-   Optimized the throughput and memory use throughout the input read and parse flows, with heap allocations and GC
    down between -6% and -89%, and throughput improved up to +143% for small inputs. Most inputs sizes will see
    throughput increases of ~ 20%. These performance improvements come through recycling the backing `byte[]` and `char[]`
    arrays used to read and parse the input. [2186](https://github.com/jhy/jsoup/pull/2186)
-   Speed optimized `html()` and `Entities.escape()` when the input contains UTF characters in a supplementary plane, by
    around 49%. [2183](https://github.com/jhy/jsoup/pull/2183)
-   The form associated elements returned by `FormElement.elements()` now reflect changes made to the DOM,
    subsequently to the original parse. [2140](https://github.com/jhy/jsoup/issues/2140)
-   In the `TreeBuilder`, the `onNodeInserted()` and `onNodeClosed()` events are now also fired for the outermost /
    root `Document` node. This enables source position tracking on the Document node (which was previously unset). And
    it also enables the node traversor to see the outer Document node. [2182](https://github.com/jhy/jsoup/pull/2182)
-   Selected Elements can now be position swapped inline using
    `Elements#set()`. [2212](https://github.com/jhy/jsoup/issues/2212)

##### Bug Fixes

-   `Element.cssSelector()` would fail if the element's class contained a `*`
    character. [2169](https://github.com/jhy/jsoup/issues/2169)
-   When tracking source ranges, a text node following an invalid self-closing element may be left
    untracked. [2175](https://github.com/jhy/jsoup/issues/2175)
-   When a document has no doctype, or a doctype not named `html`, it should be parsed in Quirks
    Mode. [2197](https://github.com/jhy/jsoup/issues/2197)
-   With a selector like `div:has(span + a)`, the `has()` component was not working correctly, as the inner combining
    query caused the evaluator to match those against the outer's siblings, not
    children. [2187](https://github.com/jhy/jsoup/issues/2187)
-   A selector query that included multiple `:has()` components in a nested `:has()` might incorrectly
    execute. [2131](https://github.com/jhy/jsoup/issues/2131)
-   When cookie names in a response are duplicated, the simple view of cookies available via
    `Connection.Response#cookies()` will provide the last one set. Generally it is better to use
    the [Jsoup.newSession](https://jsoup.org/cookbook/web/request-session) method to maintain a cookie jar, as that
    applies appropriate path selection on cookies when making requests. [1831](https://github.com/jhy/jsoup/issues/1831)
-   When parsing named HTML entities, base entities should resolve if they are a prefix of the input token (and not in an
    attribute). [2207](https://github.com/jhy/jsoup/issues/2207)
-   Fixed incorrect tracking of source ranges for attributes merged from late-occurring elements that were implicitly
    created (`html` or `body`). [2204](https://github.com/jhy/jsoup/issues/2204)
-   Follow the current HTML specification in the tokenizer to allow `<` as part of a tag name, instead of emitting it as a
    character node. [2230](https://github.com/jhy/jsoup/issues/2230)
-   Similarly, allow a `<` as the start of an attribute name, vs creating a new element. The previous behavior was
    intended to parse closer to what we anticipated the author's intent to be, but that does not align to the spec or to
    how browsers behave. [1483](https://github.com/jhy/jsoup/issues/1483)

</details>

<details>
<summary>java-native-access/jna</summary>

### [`v5.17.0`](https://github.com/java-native-access/jna/blob/HEAD/CHANGES.md#Release-5170)

[Compare Source](https://github.com/java-native-access/jna/compare/5.16.0...5.17.0)

\================

## Features

-   [#&#8203;1658](https://github.com/java-native-access/jna/pull/1658):  Add win32 power event constants, types, and functions - [@&#8203;eranl](https://github.com/eranl).

## Bug Fixes

-   [#&#8203;1647](https://github.com/java-native-access/jna/issues/1647): Fix calls to jnidispatch on Android with 16KB page size (part 2) - [@&#8203;BugsBeGone](https://github.com/BugsBeGone).

### [`v5.16.0`](https://github.com/java-native-access/jna/blob/HEAD/CHANGES.md#Release-5160)

[Compare Source](https://github.com/java-native-access/jna/compare/5.15.0...5.16.0)

\==============

## Features

-   [#&#8203;1626](https://github.com/java-native-access/jna/pull/1626): Add caching of field list and field validation in `Structure` along with more efficient reentrant read-write locking instead of synchronized() blocks - [@&#8203;BrettWooldridge](https://github.com/brettwooldridge)

## Bug Fixes

-   [#&#8203;1618](https://github.com/java-native-access/jna/issues/1618): Fix calls to jnidispatch on Android with 16KB page size - [@&#8203;Thomyrock](https://github.com/Thomyrock)

</details>

<details>
<summary>vladmihalcea/hypersistence-utils</summary>

### [`v3.10.1`](https://github.com/vladmihalcea/hypersistence-utils/blob/HEAD/changelog.txt#Version-3101---June-14-2025)

\================================================================================

Update description in pom.xml to mention support of Hibernate 6.6 [#&#8203;790](https://github.com/vladmihalcea/hypersistence-utils/issues/790)

Remove the central-publishing-maven-plugin dependency [#&#8203;789](https://github.com/vladmihalcea/hypersistence-utils/issues/789)

</details>

<details>
<summary>diffplug/spotless</summary>

### [`v2.44.0`](https://github.com/diffplug/spotless/blob/HEAD/CHANGES.md#&#8203;2440---2024-01-15)

##### Added

-   New static method to `DiffMessageFormatter` which allows to retrieve diffs with their line numbers ([#&#8203;1960](https://github.com/diffplug/spotless/issues/1960))
-   Gradle - Support for formatting shell scripts via [shfmt](https://github.com/mvdan/sh). ([#&#8203;1994](https://github.com/diffplug/spotless/pull/1994))

##### Fixed

-   Fix empty files with biome >= 1.5.0 when formatting files that are in the ignore list of the biome configuration file. ([#&#8203;1989](https://github.com/diffplug/spotless/pull/1989) fixes [#&#8203;1987](https://github.com/diffplug/spotless/issues/1987))
-   Fix a regression in BufStep where the same arguments were being provided to every `buf` invocation. ([#&#8203;1976](https://github.com/diffplug/spotless/issues/1976))

##### Changed

-   Use palantir-java-format 2.39.0 on Java 21. ([#&#8203;1948](https://github.com/diffplug/spotless/pull/1948))
-   Bump default `ktlint` version to latest `1.0.1` -> `1.1.1`. ([#&#8203;1973](https://github.com/diffplug/spotless/pull/1973))
-   Bump default `googleJavaFormat` version to latest `1.18.1` -> `1.19.2`. ([#&#8203;1971](https://github.com/diffplug/spotless/pull/1971))
-   Bump default `diktat` version to latest `1.2.5` -> `2.0.0`. ([#&#8203;1972](https://github.com/diffplug/spotless/pull/1972))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This MR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->