Re: [BUG] IMAP hibernation fails on FreeBSD 15.x with "Invalid peer_dev_major value"

Jordan Ostrev via dovecot <[email protected]> Thu, 25 Jun 2026 18:34:31 +0300
Newsgroups gmane.mail.imap.dovecot
Message-ID <[email protected]>
--===============1033099546856796770==
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_C3460F71-09AD-46FE-998F-1B585FC99FD8"


--Apple-Mail=_C3460F71-09AD-46FE-998F-1B585FC99FD8
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi Timo,

I am running Dovecot 2.4.4 under FreeBSD 15.x, and I noticed that the =
IMAP hibernation feature fails to work natively on this platform.

The Problem

Under FreeBSD, running fstat() on a network socket returns NODEV =
(UINT64_MAX or 18446744073709551615) for both major()and minor() device =
numbers.

When imap-hibernate tries to serialize these values, they are printed as =
64-bit unsigned integers. However, Dovecot's internal parser in =
imap-master-client.c uses standard 32-bit integers (unsigned int) and =
str_to_uint(). This causes an integer overflow, triggering the following =
error during hibernation: Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615

The Solution

I've created a patch for src/imap/imap-master-client.c that scales the =
parser variables to uint64_t and switches the parsing function to =
str_to_uint64(). Additionally, it updates the verification assertion to =
prevent BUG crashes due to the expected dev_tbehavior of virtual network =
sockets under FreeBSD.

Here is the combined patch that fixes the issue completely:

=D0=A4=D1=80=D0=B0=D0=B3=D0=BC=D0=B5=D0=BD=D1=82 =D0=BE=D1=82 =D0=BA=D0=BE=
=D0=B4

--- src/imap/imap-master-client.c.orig	2026-05-12 10:48:57 UTC
+++ src/imap/imap-master-client.c
@@ -75,7 +75,7 @@ imap_master_client_parse_input(const char *const *args
 			       const char **error_r)
 {
 	const char *key, *value;
-	unsigned int peer_dev_major =3D 0, peer_dev_minor =3D 0;
+	uint64_t peer_dev_major =3D 0, peer_dev_minor =3D 0;

 	i_zero(input_r);
 	i_zero(stats_r);
@@ -128,13 +128,13 @@ imap_master_client_parse_input(const char *const =
*args
 				return -1;
 			}
 		} else if (strcmp(key, "peer_dev_major") =3D=3D 0) {
-			if (str_to_uint(value, &peer_dev_major) < 0) {
+			if (str_to_uint64(value, &peer_dev_major) < 0) {
 				*error_r =3D t_strdup_printf(
 					"Invalid peer_dev_major value: =
%s", value);
 				return -1;
 			}
 		} else if (strcmp(key, "peer_dev_minor") =3D=3D 0) {
-			if (str_to_uint(value, &peer_dev_minor) < 0) {
+			if (str_to_uint64(value, &peer_dev_minor) < 0) {
 				*error_r =3D t_strdup_printf(
 					"Invalid peer_dev_minor value: =
%s", value);
 				return -1;
@@ -265,7 +265,7 @@ imap_master_client_parse_input(const char *const =
*args
 	}
 	if (peer_dev_major !=3D 0 || peer_dev_minor !=3D 0) {
 		master_input_r->peer_dev =3D
-			makedev(peer_dev_major, peer_dev_minor);
+			makedev((unsigned long)peer_dev_major, (unsigned =
long)peer_dev_minor);
 	}
 	return 0;
 }
@@ -410,7 +410,8 @@ static int imap_master_client_verify(const struct =
imap
 		return -1;
 	}
 	if (peer_st.st_ino !=3D master_input->peer_ino ||
-	    !CMP_DEV_T(peer_st.st_dev, master_input->peer_dev)) {
+	    (!CMP_DEV_T(peer_st.st_dev, master_input->peer_dev) &&
+	     major(peer_st.st_dev) !=3D (unsigned long)-1)) {
 		*error_r =3D t_strdup_printf(
 			"BUG: Expected peer device=3D%lu,%lu inode=3D%s =
doesn't match "
 			"client fd's actual device=3D%lu,%lu inode=3D%s",
Result

With this patch applied, hibernation works flawlessly under FreeBSD:

# doveadm who=20
username            # service (pids)  (ips)=20
[email protected] 1 imap    (26000) (46.10.221.52)=20
[email protected] 2 imap-hibernate (26260) (46.10.221.52)
No error messages are logged by dovecot when it hibernates and restores =
clients. I hope this can be integrated into the upstream code.

Best regards,=20

Jordan




> On 25 Jun 2026, at 15:50, Jordan Ostrev <[email protected]> wrote:
>=20
> Hi Timo,
> i=E2=80=99m not programmer at all but here is my understanding of the =
problem:
> In src/imap/imap-client-hibernate.c, the code serializes =
peer_dev_major and peer_dev_minor using major() and minor() macros:
>=20
> str_printfa(cmd, =
"\tpeer_dev_major=3D%lu\tpeer_dev_minor=3D%lu\tpeer_ino=3D%llu",
>             (unsigned long)major(peer_st.st_dev),
>             (unsigned long)minor(peer_st.st_dev),
>             (unsigned long long)peer_st.st_ino);
>=20
> On FreeBSD, major() and minor() can return UINT64_MAX =
(18446744073709551615) for file descriptors that are not block/character =
devices (such as sockets on tmpfs/devfs). This value exceeds UINT_MAX =
and cannot be parsed by str_to_uint() in imap-master-client.c, causing =
hibernation to fail.
>=20
>=20
>> On 25 Jun 2026, at 14:37, Jordan Ostrev <[email protected]> wrote:
>>=20
>> Hi Timo,
>>=20
>> I=E2=80=99ve made freebsd port patch which looks like that:
>>=20
>> # cat files/patch-configure.ac
>> --- configure.ac.orig	2026-06-25 11:03:42 UTC
>> +++ configure.ac
>> @@ -363,7 +363,7 @@ AS_CASE(
>> DOVECOT_IOLOOP
>> DOVECOT_NOTIFY
>> AS_CASE(
>> -   ["$notify"],
>> +   ["$have_notify"],
>>    [none],   [BUILD_IMAP_HIBERNATE=3D0],
>>    [kqueue], [BUILD_IMAP_HIBERNATE=3D0],
>>    [BUILD_IMAP_HIBERNATE=3D1])
>>=20
>> I=E2=80=99m simulating the situation with telnet:
>> c idle
>> + idling
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * OK Still here
>> * OK Still here
>> * 4228 EXISTS
>> * 1 RECENT
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * 4228 EXISTS
>> * 1 RECENT
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * OK Still here
>> * OK Still here
>> * OK Still here
>> * OK Still here
>> * 4228 EXISTS
>> * 1 RECENT
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * OK Still here
>> * OK Still here
>> d idle
>> c BAD Idle completed.
>> + idling
>> * OK Still here
>> * 4228 EXISTS
>> * 1 RECENT
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * OK Still here
>> * 4228 EXISTS
>> * 4227 FETCH (FLAGS (\Seen $NotJunk NotJunk))
>> * 4228 EXPUNGE
>> * OK Still here
>>=20
>>=20
>> in the log I see following:
>>=20
>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> Jun 25 14:21:17 classic dovecot[29292]: =
imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> Jun 25 14:21:17 classic dovecot[29292]: =
imap([email protected])<30943><EJZELRJVp5QuCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> Jun 25 14:26:03 classic dovecot[29292]: =
imap([email protected])<30943><EJZELRJVp5QuCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> Jun 25 14:26:03 classic dovecot[29292]: =
imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>> Jun 25 14:29:28 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> Jun 25 14:29:28 classic dovecot[29292]: =
imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>> Jun 25 14:33:36 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> Jun 25 14:33:36 classic dovecot[29292]: =
imap([email protected])<33114><cX5QWRJVrZguCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>> Jun 25 14:33:37 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> Jun 25 14:33:37 classic dovecot[29292]: =
imap([email protected])<33112><NlVOWRJVkbEuCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>> Jun 25 14:34:40 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> Jun 25 14:34:40 classic dovecot[29292]: =
imap([email protected])<33112><NlVOWRJVkbEuCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>=20
>>=20
>> Here is my piece of my config:
>> # dovecot -a | grep hibernate
>> imap_hibernate_timeout =3D 1 mins
>> service imap-hibernate {
>>  unix_listener imap-hibernate {
>>=20
>> What we can do more?
>>=20
>> KR,
>> Jordan
>>=20
>>=20
>>> On 25 Jun 2026, at 12:34, Timo Sirainen <[email protected]> wrote:
>>>=20
>>> On 24. Jun 2026, at 21.34, Jordan Ostrev via dovecot =
<[email protected]> wrote:
>>>>=20
>>>> Hi,
>>>> IMAP hibernation compiles and attempts to run on FreeBSD 15.x =
(tested with
>>>> Dovecot 2.4.4 and FreeBSD 15.1), but fails at runtime with:
>>>> plain
>>>>=20
>>>> imap-hibernate: Error: conn unix:imap-hibernate (uid=3D125): Failed =
to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>>=20
>>>> Jun 24 21:27:08 classic dovecot[36888]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 24 21:27:08 classic dovecot[36888]: =
imap([email protected])<37120><ExaV/gNVAdt/AAAB>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>> ..
>>>>  1. Disable hibernation at compile time for kqueue systems, or
>>>=20
>>> It was already supposed to be done, but looks like there's a bug. =
Can you verify if this works? :
>>>=20
>>> diff --git a/configure.ac b/configure.ac
>>> index 9beacaa299..04f9c8edd6 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -363,7 +363,7 @@ DOVECOT_TYPEOF
>>> DOVECOT_IOLOOP
>>> DOVECOT_NOTIFY
>>> AS_CASE(
>>> -   ["$notify"],
>>> +   ["$have_notify"],
>>>   [none],   [BUILD_IMAP_HIBERNATE=3D0],
>>>   [kqueue], [BUILD_IMAP_HIBERNATE=3D0],
>>>   [BUILD_IMAP_HIBERNATE=3D1])
>>=20
>=20


--Apple-Mail=_C3460F71-09AD-46FE-998F-1B585FC99FD8
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"

ICAgSGkgVGltbywKCiAgIEkgYW0gcnVubmluZyBEb3ZlY290IDIuNC40IHVuZGVyIEZyZWVCU0Qg
MTUueCwgYW5kIEkgbm90aWNlZCB0aGF0IHRoZSBJTUFQCiAgIGhpYmVybmF0aW9uIGZlYXR1cmUg
ZmFpbHMgdG8gd29yayBuYXRpdmVseSBvbiB0aGlzIHBsYXRmb3JtLgoKICBUaGUgUHJvYmxlbQoK
ICAgVW5kZXIgRnJlZUJTRCwgcnVubmluZyBmc3RhdCgpIG9uIGEgbmV0d29yayBzb2NrZXQKICAg
cmV0dXJucyBOT0RFViAoVUlOVDY0X01BWCBvciAxODQ0Njc0NDA3MzcwOTU1MTYxNSkgZm9yCiAg
IGJvdGggbWFqb3IoKWFuZCBtaW5vcigpIGRldmljZSBudW1iZXJzLgoKICAgV2hlbiBpbWFwLWhp
YmVybmF0ZSB0cmllcyB0byBzZXJpYWxpemUgdGhlc2UgdmFsdWVzLCB0aGV5IGFyZSBwcmludGVk
IGFzCiAgIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2Vycy4gSG93ZXZlciwgRG92ZWNvdCdzIGludGVy
bmFsIHBhcnNlcgogICBpbiBpbWFwLW1hc3Rlci1jbGllbnQuYyB1c2VzIHN0YW5kYXJkIDMyLWJp
dCBpbnRlZ2VycyAodW5zaWduZWQgaW50KQogICBhbmQgc3RyX3RvX3VpbnQoKS4gVGhpcyBjYXVz
ZXMgYW4gaW50ZWdlciBvdmVyZmxvdywgdHJpZ2dlcmluZyB0aGUKICAgZm9sbG93aW5nIGVycm9y
IGR1cmluZyBoaWJlcm5hdGlvbjogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDogSW52YWxp
ZAogICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKCiAgVGhlIFNv
bHV0aW9uCgogICBJJ3ZlIGNyZWF0ZWQgYSBwYXRjaCBmb3Igc3JjL2ltYXAvaW1hcC1tYXN0ZXIt
Y2xpZW50LmMgdGhhdCBzY2FsZXMgdGhlCiAgIHBhcnNlciB2YXJpYWJsZXMgdG8gdWludDY0X3Qg
YW5kIHN3aXRjaGVzIHRoZSBwYXJzaW5nIGZ1bmN0aW9uCiAgIHRvIHN0cl90b191aW50NjQoKS4g
QWRkaXRpb25hbGx5LCBpdCB1cGRhdGVzIHRoZSB2ZXJpZmljYXRpb24gYXNzZXJ0aW9uIHRvCiAg
IHByZXZlbnQgQlVHIGNyYXNoZXMgZHVlIHRvIHRoZSBleHBlY3RlZCBkZXZfdGJlaGF2aW9yIG9m
IHZpcnR1YWwgbmV0d29yawogICBzb2NrZXRzIHVuZGVyIEZyZWVCU0QuCgogICBIZXJlIGlzIHRo
ZSBjb21iaW5lZCBwYXRjaCB0aGF0IGZpeGVzIHRoZSBpc3N1ZSBjb21wbGV0ZWx5OgoKICAgRnJh
Z21lbnQgb3Qga29kCgogLS0tIHNyYy9pbWFwL2ltYXAtbWFzdGVyLWNsaWVudC5jLm9yaWcgIDIw
MjYtMDUtMTIgMTA6NDg6NTcgVVRDCiArKysgc3JjL2ltYXAvaW1hcC1tYXN0ZXItY2xpZW50LmMK
IEBAIC03NSw3ICs3NSw3IEBAIGltYXBfbWFzdGVyX2NsaWVudF9wYXJzZV9pbnB1dChjb25zdCBj
aGFyICpjb25zdCAqYXJncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKiplcnJvcl9yKQogIHsKICAgICAgICAgY29uc3QgY2hhciAqa2V5LCAqdmFsdWU7CiAtICAg
ICAgIHVuc2lnbmVkIGludCBwZWVyX2Rldl9tYWpvciA9IDAsIHBlZXJfZGV2X21pbm9yID0gMDsK
ICsgICAgICAgdWludDY0X3QgcGVlcl9kZXZfbWFqb3IgPSAwLCBwZWVyX2Rldl9taW5vciA9IDA7
CgogICAgICAgICBpX3plcm8oaW5wdXRfcik7CiAgICAgICAgIGlfemVybyhzdGF0c19yKTsKIEBA
IC0xMjgsMTMgKzEyOCwxMyBAQCBpbWFwX21hc3Rlcl9jbGllbnRfcGFyc2VfaW5wdXQoY29uc3Qg
Y2hhciAqY29uc3QgKmFyZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc3RyY21wKGtleSwgInBlZXJfZGV2X21ham9yIikgPT0gMCkgewogLSAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0cl90b191aW50KHZhbHVlLCAmcGVlcl9kZXZfbWFqb3IpIDwgMCkgewog
KyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cl90b191aW50NjQodmFsdWUsICZwZWVyX2Rl
dl9tYWpvcikgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICplcnJvcl9y
ID0gdF9zdHJkdXBfcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOiAlcyIsIHZhbHVlKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGtleSwgInBlZXJfZGV2X21p
bm9yIikgPT0gMCkgewogLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cl90b191aW50KHZh
bHVlLCAmcGVlcl9kZXZfbWlub3IpIDwgMCkgewogKyAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHN0cl90b191aW50NjQodmFsdWUsICZwZWVyX2Rldl9taW5vcikgPCAwKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICplcnJvcl9yID0gdF9zdHJkdXBfcHJpbnRmKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHBlZXJfZGV2X21pbm9y
IHZhbHVlOiAlcyIsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC0xOwogQEAgLTI2NSw3ICsyNjUsNyBAQCBpbWFwX21hc3Rlcl9jbGllbnRfcGFyc2VfaW5w
dXQoY29uc3QgY2hhciAqY29uc3QgKmFyZ3MKICAgICAgICAgfQogICAgICAgICBpZiAocGVlcl9k
ZXZfbWFqb3IgIT0gMCB8fCBwZWVyX2Rldl9taW5vciAhPSAwKSB7CiAgICAgICAgICAgICAgICAg
bWFzdGVyX2lucHV0X3ItPnBlZXJfZGV2ID0KIC0gICAgICAgICAgICAgICAgICAgICAgIG1ha2Vk
ZXYocGVlcl9kZXZfbWFqb3IsIHBlZXJfZGV2X21pbm9yKTsKICsgICAgICAgICAgICAgICAgICAg
ICAgIG1ha2VkZXYoKHVuc2lnbmVkIGxvbmcpcGVlcl9kZXZfbWFqb3IsICh1bnNpZ25lZCBsb25n
KXBlZXJfZGV2X21pbm9yKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICB9CiBAQCAt
NDEwLDcgKzQxMCw4IEBAIHN0YXRpYyBpbnQgaW1hcF9tYXN0ZXJfY2xpZW50X3ZlcmlmeShjb25z
dCBzdHJ1Y3QgaW1hcAogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAg
ICAgICBpZiAocGVlcl9zdC5zdF9pbm8gIT0gbWFzdGVyX2lucHV0LT5wZWVyX2lubyB8fAogLSAg
ICAgICAgICAgIUNNUF9ERVZfVChwZWVyX3N0LnN0X2RldiwgbWFzdGVyX2lucHV0LT5wZWVyX2Rl
dikpIHsKICsgICAgICAgICAgICghQ01QX0RFVl9UKHBlZXJfc3Quc3RfZGV2LCBtYXN0ZXJfaW5w
dXQtPnBlZXJfZGV2KSAmJgogKyAgICAgICAgICAgIG1ham9yKHBlZXJfc3Quc3RfZGV2KSAhPSAo
dW5zaWduZWQgbG9uZyktMSkpIHsKICAgICAgICAgICAgICAgICAqZXJyb3JfciA9IHRfc3RyZHVw
X3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgICJCVUc6IEV4cGVjdGVkIHBlZXIgZGV2
aWNlPSVsdSwlbHUgaW5vZGU9JXMgZG9lc24ndCBtYXRjaCAiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAiY2xpZW50IGZkJ3MgYWN0dWFsIGRldmljZT0lbHUsJWx1IGlub2RlPSVzIiwKCiAgUmVz
dWx0CgogICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCwgaGliZXJuYXRpb24gd29ya3MgZmxhd2xl
c3NseSB1bmRlciBGcmVlQlNEOgoKICMgZG92ZWFkbSB3aG8KIHVzZXJuYW1lICAgICAgICAgICAg
IyBzZXJ2aWNlIChwaWRzKSAgKGlwcykKIGpvcmRhbkBvc3RyZWZmLmluZm8gMSBpbWFwICAgICgy
NjAwMCkgKDQ2LjEwLjIyMS41MikKIGpvcmRhbkBvc3RyZWZmLmluZm8gMiBpbWFwLWhpYmVybmF0
ZSAoMjYyNjApICg0Ni4xMC4yMjEuNTIpCgogICBObyBlcnJvciBtZXNzYWdlcyBhcmUgbG9nZ2Vk
IGJ5IGRvdmVjb3Qgd2hlbiBpdCBoaWJlcm5hdGVzIGFuZCByZXN0b3JlcwogICBjbGllbnRzLiBJ
IGhvcGUgdGhpcyBjYW4gYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSB1cHN0cmVhbSBjb2RlLgoKICAg
QmVzdCByZWdhcmRzLAoKICAgSm9yZGFuCgogICAgIE9uIDI1IEp1biAyMDI2LCBhdCAxNTo1MCwg
Sm9yZGFuIE9zdHJldiA8am9yZGFuQG9zdHJlZmYuaW5mbz4gd3JvdGU6CiAgICAgSGkgVGltbywK
ICAgICBpJ20gbm90IHByb2dyYW1tZXIgYXQgYWxsIGJ1dCBoZXJlIGlzIG15IHVuZGVyc3RhbmRp
bmcgb2YgdGhlIHByb2JsZW06CgogSW4gc3JjL2ltYXAvaW1hcC1jbGllbnQtaGliZXJuYXRlLmMs
IHRoZSBjb2RlIHNlcmlhbGl6ZXMgcGVlcl9kZXZfbWFqb3IgYW5kIHBlZXJfZGV2X21pbm9yIHVz
aW5nIG1ham9yKCkgYW5kIG1pbm9yKCkgbWFjcm9zOgoKIHN0cl9wcmludGZhKGNtZCwgIlx0cGVl
cl9kZXZfbWFqb3I9JWx1XHRwZWVyX2Rldl9taW5vcj0lbHVcdHBlZXJfaW5vPSVsbHUiLAogICAg
ICAgICAgICAgKHVuc2lnbmVkIGxvbmcpbWFqb3IocGVlcl9zdC5zdF9kZXYpLAogICAgICAgICAg
ICAgKHVuc2lnbmVkIGxvbmcpbWlub3IocGVlcl9zdC5zdF9kZXYpLAogICAgICAgICAgICAgKHVu
c2lnbmVkIGxvbmcgbG9uZylwZWVyX3N0LnN0X2lubyk7CgogT24gRnJlZUJTRCwgbWFqb3IoKSBh
bmQgbWlub3IoKSBjYW4gcmV0dXJuIFVJTlQ2NF9NQVggKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSBm
b3IgZmlsZSBkZXNjcmlwdG9ycyB0aGF0IGFyZSBub3QgYmxvY2svY2hhcmFjdGVyIGRldmljZXMg
KHN1Y2ggYXMgc29ja2V0cyBvbiB0bXBmcy9kZXZmcykuIFRoaXMgdmFsdWUgZXhjZWVkcyBVSU5U
X01BWCBhbmQgY2Fubm90IGJlIHBhcnNlZCBieSBzdHJfdG9fdWludCgpIGluIGltYXAtbWFzdGVy
LWNsaWVudC5jLCBjYXVzaW5nIGhpYmVybmF0aW9uIHRvIGZhaWwuCgogICAgICAgT24gMjUgSnVu
IDIwMjYsIGF0IDE0OjM3LCBKb3JkYW4gT3N0cmV2IDxqb3JkYW5Ab3N0cmVmZi5pbmZvPiB3cm90
ZToKICAgICAgIEhpIFRpbW8sCgogICAgICAgSSd2ZSBtYWRlIGZyZWVic2QgcG9ydCBwYXRjaCB3
aGljaCBsb29rcyBsaWtlIHRoYXQ6CgogICAgICAgIyBjYXQgZmlsZXMvcGF0Y2gtY29uZmlndXJl
LmFjCiAgICAgICAtLS0gY29uZmlndXJlLmFjLm9yaWcgICAyMDI2LTA2LTI1IDExOjAzOjQyIFVU
QwogICAgICAgKysrIGNvbmZpZ3VyZS5hYwogICAgICAgQEAgLTM2Myw3ICszNjMsNyBAQCBBU19D
QVNFKAogICAgICAgRE9WRUNPVF9JT0xPT1AKICAgICAgIERPVkVDT1RfTk9USUZZCiAgICAgICBB
U19DQVNFKAogICAgICAgLSAgIFsiJG5vdGlmeSJdLAogICAgICAgKyAgIFsiJGhhdmVfbm90aWZ5
Il0sCiAgICAgICAgICBbbm9uZV0sICAgW0JVSUxEX0lNQVBfSElCRVJOQVRFPTBdLAogICAgICAg
ICAgW2txdWV1ZV0sIFtCVUlMRF9JTUFQX0hJQkVSTkFURT0wXSwKICAgICAgICAgIFtCVUlMRF9J
TUFQX0hJQkVSTkFURT0xXSkKCiAgICAgICBJJ20gc2ltdWxhdGluZyB0aGUgc2l0dWF0aW9uIHdp
dGggdGVsbmV0OgogICAgICAgYyBpZGxlCiAgICAgICArIGlkbGluZwogICAgICAgKiA0MjI4IEVY
UFVOR0UKICAgICAgICogMCBSRUNFTlQKICAgICAgICogT0sgU3RpbGwgaGVyZQogICAgICAgKiBP
SyBTdGlsbCBoZXJlCiAgICAgICAqIDQyMjggRVhJU1RTCiAgICAgICAqIDEgUkVDRU5UCiAgICAg
ICAqIDQyMjggRVhQVU5HRQogICAgICAgKiAwIFJFQ0VOVAogICAgICAgKiA0MjI4IEVYSVNUUwog
ICAgICAgKiAxIFJFQ0VOVAogICAgICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICogMCBSRUNFTlQK
ICAgICAgICogT0sgU3RpbGwgaGVyZQogICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAqIE9L
IFN0aWxsIGhlcmUKICAgICAgICogT0sgU3RpbGwgaGVyZQogICAgICAgKiA0MjI4IEVYSVNUUwog
ICAgICAgKiAxIFJFQ0VOVAogICAgICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICogMCBSRUNFTlQK
ICAgICAgICogT0sgU3RpbGwgaGVyZQogICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICBkIGlk
bGUKICAgICAgIGMgQkFEIElkbGUgY29tcGxldGVkLgogICAgICAgKyBpZGxpbmcKICAgICAgICog
T0sgU3RpbGwgaGVyZQogICAgICAgKiA0MjI4IEVYSVNUUwogICAgICAgKiAxIFJFQ0VOVAogICAg
ICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICogMCBSRUNFTlQKICAgICAgICogT0sgU3RpbGwgaGVy
ZQogICAgICAgKiA0MjI4IEVYSVNUUwogICAgICAgKiA0MjI3IEZFVENIIChGTEFHUyAoXFNlZW4g
JE5vdEp1bmsgTm90SnVuaykpCiAgICAgICAqIDQyMjggRVhQVU5HRQogICAgICAgKiBPSyBTdGls
bCBoZXJlCgogICAgICAgaW4gdGhlIGxvZyBJIHNlZSBmb2xsb3dpbmc6CgogICAgICAgSnVuIDI1
IDE0OjIxOjE3IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjog
Y29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJz
ZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0
Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNzaWMgZG92ZWNvdFsy
OTI5Ml06CiAgICAgICBpbWFwKGpvcmRhbkBvc3RyZWZmLmluZm8pPDI5NDU0PjxDTFAvRWhKVnFJ
Z3VDdDAwPjogRXJyb3I6IENvdWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92
YXIvcnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZh
aWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6
CiAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNz
aWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29ubgogICAgICAgdW5p
eDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6
IEludmFsaWQKICAgICAgIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYx
NQogICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBp
bWFwKGpvcmRhbkBvc3RyZWZmLmluZm8pPDMwOTQzPjxFSlpFTFJKVnA1UXVDdDAwPjogRXJyb3I6
IENvdWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3Qv
aW1hcC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBj
bGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0
NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjI2OjAzIGNsYXNzaWMgZG92ZWNvdFsyOTI5
Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0
ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAg
IHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1
IDE0OjI2OjAzIGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKGpvcmRhbkBvc3Ry
ZWZmLmluZm8pPDMwOTQzPjxFSlpFTFJKVnA1UXVDdDAwPjogRXJyb3I6IENvdWxkbid0CiAgICAg
ICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUg
cmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IElu
dmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQog
ICAgICAgSnVuIDI1IDE0OjI2OjAzIGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJu
YXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZh
aWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBlZXJfZGV2X21ham9y
IHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjI2OjAzIGNsYXNz
aWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKGpvcmRhbkBvc3RyZWZmLmluZm8pPDI5NDU0
PjxDTFAvRWhKVnFJZ3VDdDAwPjogRXJyb3I6IENvdWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1h
cCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAg
IGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZf
bWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0
OjI5OjI4IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29u
bgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBj
bGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0
NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjI5OjI4IGNsYXNzaWMgZG92ZWNvdFsyOTI5
Ml06CiAgICAgICBpbWFwKGpvcmRhbkBvc3RyZWZmLmluZm8pPDI5NDU0PjxDTFAvRWhKVnFJZ3VD
dDAwPjogRXJyb3I6IENvdWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIv
cnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxl
ZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAg
ICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjMzOjM2IGNsYXNzaWMg
ZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDpp
bWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IElu
dmFsaWQKICAgICAgIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQog
ICAgICAgSnVuIDI1IDE0OjMzOjM2IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFw
KGpvcmRhbkBvc3RyZWZmLmluZm8pPDMzMTE0PjxjWDVRV1JKVnJaZ3VDdDAwPjogRXJyb3I6IENv
dWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1h
cC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGll
bnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3
MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjMzOjM3IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06
IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAo
dWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBl
ZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0
OjMzOjM3IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKGpvcmRhbkBvc3RyZWZm
LmluZm8pPDMzMTEyPjxObFZPV1JKVmtiRXVDdDAwPjogRXJyb3I6IENvdWxkbid0CiAgICAgICBo
aWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUgcmV0
dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFs
aWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAg
ICAgSnVuIDI1IDE0OjM0OjQwIGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRl
OiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxl
ZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBlZXJfZGV2X21ham9yIHZh
bHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjM0OjQwIGNsYXNzaWMg
ZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKGpvcmRhbkBvc3RyZWZmLmluZm8pPDMzMTEyPjxO
bFZPV1JKVmtiRXVDdDAwPjogRXJyb3I6IENvdWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBj
bGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZh
aWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFq
b3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQoKICAgICAgIEhlcmUgaXMgbXkg
cGllY2Ugb2YgbXkgY29uZmlnOgogICAgICAgIyBkb3ZlY290IC1hIHwgZ3JlcCBoaWJlcm5hdGUK
ICAgICAgIGltYXBfaGliZXJuYXRlX3RpbWVvdXQgPSAxIG1pbnMKICAgICAgIHNlcnZpY2UgaW1h
cC1oaWJlcm5hdGUgewogICAgICAgIHVuaXhfbGlzdGVuZXIgaW1hcC1oaWJlcm5hdGUgewoKICAg
ICAgIFdoYXQgd2UgY2FuIGRvIG1vcmU/CgogICAgICAgS1IsCiAgICAgICBKb3JkYW4KCiAgICAg
ICAgIE9uIDI1IEp1biAyMDI2LCBhdCAxMjozNCwgVGltbyBTaXJhaW5lbiA8dGltb0BzaXJhaW5l
bi5jb20+IHdyb3RlOgoKICAgICAgICAgT24gMjQuIEp1biAyMDI2LCBhdCAyMS4zNCwgSm9yZGFu
IE9zdHJldiB2aWEgZG92ZWNvdAogICAgICAgICA8ZG92ZWNvdEBkb3ZlY290Lm9yZz4gd3JvdGU6
CgogICAgICAgICAgIEhpLAogICAgICAgICAgIElNQVAgaGliZXJuYXRpb24gY29tcGlsZXMgYW5k
IGF0dGVtcHRzIHRvIHJ1biBvbiBGcmVlQlNEIDE1LngKICAgICAgICAgICAodGVzdGVkIHdpdGgK
ICAgICAgICAgICBEb3ZlY290IDIuNC40IGFuZCBGcmVlQlNEIDE1LjEpLCBidXQgZmFpbHMgYXQg
cnVudGltZSB3aXRoOgogICAgICAgICAgIHBsYWluCgogICAgICAgICAgIGltYXAtaGliZXJuYXRl
OiBFcnJvcjogY29ubiB1bml4OmltYXAtaGliZXJuYXRlICh1aWQ9MTI1KTogRmFpbGVkCiAgICAg
ICAgICAgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVl
OgogICAgICAgICAgIDE4NDQ2NzQ0MDczNzA5NTUxNjE1CgogICAgICAgICAgIEp1biAyNCAyMToy
NzowOCBjbGFzc2ljIGRvdmVjb3RbMzY4ODhdOiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6CiAgICAg
ICAgICAgY29ubiB1bml4OmltYXAtaGliZXJuYXRlICh1aWQ9MTI1KTogRmFpbGVkIHRvIHBhcnNl
IGNsaWVudCBpbnB1dDoKICAgICAgICAgICBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOiAx
ODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgICAgIEp1biAyNCAyMToyNzowOCBjbGFzc2ljIGRv
dmVjb3RbMzY4ODhdOgogICAgICAgICAgIGltYXAoam9yZGFuQG9zdHJlZmYuaW5mbyk8MzcxMjA+
PEV4YVYvZ05WQWR0L0FBQUI+OiBFcnJvcjoKICAgICAgICAgICBDb3VsZG4ndCBoaWJlcm5hdGUg
aW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUKICAgICAgICAgICBy
ZXR1cm5lZCBmYWlsdXJlOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkCiAg
ICAgICAgICAgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CgogICAg
ICAgICAuLgoKICAgICAgICAgICAgMS4gRGlzYWJsZSBoaWJlcm5hdGlvbiBhdCBjb21waWxlIHRp
bWUgZm9yIGtxdWV1ZSBzeXN0ZW1zLCBvcgoKICAgICAgICAgSXQgd2FzIGFscmVhZHkgc3VwcG9z
ZWQgdG8gYmUgZG9uZSwgYnV0IGxvb2tzIGxpa2UgdGhlcmUncyBhIGJ1Zy4KICAgICAgICAgQ2Fu
IHlvdSB2ZXJpZnkgaWYgdGhpcyB3b3Jrcz8gOgoKICAgICAgICAgZGlmZiAtLWdpdCBhL2NvbmZp
Z3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwogICAgICAgICBpbmRleCA5YmVhY2FhMjk5Li4wNGY5Yzhl
ZGQ2IDEwMDY0NAogICAgICAgICAtLS0gYS9jb25maWd1cmUuYWMKICAgICAgICAgKysrIGIvY29u
ZmlndXJlLmFjCiAgICAgICAgIEBAIC0zNjMsNyArMzYzLDcgQEAgRE9WRUNPVF9UWVBFT0YKICAg
ICAgICAgRE9WRUNPVF9JT0xPT1AKICAgICAgICAgRE9WRUNPVF9OT1RJRlkKICAgICAgICAgQVNf
Q0FTRSgKICAgICAgICAgLSAgIFsiJG5vdGlmeSJdLAogICAgICAgICArICAgWyIkaGF2ZV9ub3Rp
ZnkiXSwKICAgICAgICAgICBbbm9uZV0sICAgW0JVSUxEX0lNQVBfSElCRVJOQVRFPTBdLAogICAg
ICAgICAgIFtrcXVldWVdLCBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MF0sCiAgICAgICAgICAgW0JV
SUxEX0lNQVBfSElCRVJOQVRFPTFdKQo=

--Apple-Mail=_C3460F71-09AD-46FE-998F-1B585FC99FD8--

--===============1033099546856796770==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

--===============1033099546856796770==--