sub checksum { my $s = shift; if (defined(&utf8::downgrade)) { utf8::downgrade($s, 1) or croak("Wide character in subroutine entry"); } return unpack("%32C*", $s) % 65535; }