mirror of
https://github.com/vale981/apheleia
synced 2025-03-04 17:11:40 -05:00

This also fixes a few test installers: - rustfmt is available via apt-get in 22.04, use that instead of tarball that's no longer available - brittany now installs cleanly in the default haskell ghc/cabal in 22.04, so just use that - perltidy in 22.04 has slightly different output - nixfmt download url changed (now includes OS/arch). There was initially no binary available when nixfmt was updated, but the devs there were kind enough to provide one: https://github.com/serokell/nixfmt/issues/139 This runs a full `make fmt-build` without errors, though it takes a while ;). All tests pass, too.
32 lines
1 KiB
Raku
32 lines
1 KiB
Raku
# Taken from https://stackoverflow.com/q/30848816
|
|
while ( read +STDIN, $_, 2048 ) {
|
|
$a = 29;
|
|
$b = 73;
|
|
$c = 142;
|
|
$t = 255;
|
|
@t = map {
|
|
$_ % 16
|
|
or $t ^= $c ^=
|
|
( $m = ( 11, 10, 116, 100, 11, 122, 20, 100 )[ $_ / 16 % 8 ] ) & 110;
|
|
$t ^= (
|
|
72,
|
|
@z = ( 64, 72, $a ^= 12 * ( $_ % 16 - 2 ? 0 : $m & 17 ) ),
|
|
$b ^= $_ % 64 ? 12 : 0, @z
|
|
)[ $_ % 8 ]
|
|
} ( 16 .. 271 );
|
|
if ( ( @a = unx "C*", $_ )[20] & 48 ) {
|
|
$h = 5;
|
|
$_ = unxb24, join "",
|
|
@b = map { xB8, unxb8, chr( $_ ^ $a[ --$h + 84 ] ) } @ARGV;
|
|
s/...$/1$&/;
|
|
$d = unxV, xb25, $_;
|
|
$e = 256 | ( ord $b[4] ) << 9 | ord $b[3];
|
|
$d = $d >> 8 ^ ( $f = $t & ( $d >> 12 ^ $d >> 4 ^ $d ^ $d / 8 ) ) << 17,
|
|
$e =
|
|
$e
|
|
>> 8 ^ ( $t & ( $g = ( $q = $e >> 14 & 7 ^ $e ) ^ $q * 8 ^ $q << 6 ) )
|
|
<< 9, $_ = $t[$_] ^ ( ( $h >>= 8 ) += $f + ( ~$g & $t ) )
|
|
for @a[ 128 .. $#a ];
|
|
}
|
|
print +x "C*", @a;
|
|
}
|