   private static final String[] permArray = {
      "W@PxJqCk6e}X$RyKsEl7f1Y%S[LtFn9g2a&T]NvGoAi3b|V!OwIpBj5d{#QrD0zm",
      "8f1Z^S[MuFn9h2a&U]NvHpAi4c|V@PwIqCj5d}W#QyJrDl7e0Y%RzLtEmgTGo3b!",
      "OvHpBi4c{V@PxJqCk6d}X$QyKsDl7f0Y%SzLtFn8g2a^T]NuGoAh3b|U!wIj5W#r",
      "Ck6e}X$RzKsEm7f1Z%S[MtFn9g2a&T]NvHoAi4b|V@OwIqBj5d{W#QyJrDl0YL8^",
      "T[MuGn9h3a&U!NvHpAi4c{V@PxIqCk5d}X#QyKrDl7e0Y%SzLtFm8g2Z^]ob|OwB",
      "j4c{W@PxJqCk6e}X$RyKsEl7f1Y%S[LtFn8g2a&T]NvGoAi3b|V!OwIpB5d#QrD0",
      "X$RzKsEm8f1Z^S[MuFn9h2a&U]NvHoAi4c|V@PwIqCj5d}W#QyJrDl7e0Y%LtgTG",
      "o9h3b&U!OvHpBi4c{V@PxJqCk6d}X$QyKsDl7f0Y%SzLtFn8g2a^T]NuGA|wIj5W",
      "#PxJrCk6e}X$RzKsEm7f1Z%S[MtFn9g2a&T]NvHoAi4b|V@OwIqBj5d{WQyDl0YL",
      "sEm8f1Z^T[MuGn9h3a&U!NvHpAi4c|V@PxIqCk5d}X#QyKrDl7e0Y%SzLtFg2]ob",
      "|U!OwHpBj4c{W@PxJqCk6d}X$RyKsEl7f1Y%S[LtFn8g2a&T]NvGoAi3bVI5#QrD",
      "k6e0X$RzKsEm8f1Z^S[MuFn9h2a&U]NvHoAi4c|V@PwIqCj5d}W#QyJrDl7Y%Ltg",
      "1Z^T[MuGo9h3b&U!OvHpBi4c{V@PxIqCk6d}X$QyKsDl7f0Y%SzLtFn8g2a]NA|w",
      "IpBj5c{W#PxJrCk6e}X$RyKsEm7f1Z%S[MtFn9g2a&T]NvHoAi4b|V@OwqdQDl0Y",
      "$RzLsEm8f1Z^T[MuGn9h3a&U!NvHpAi4c|V@PxIqCk5d}X#QyKrDl7e0Y%StFg2]",
      "MuGo9h3b|U!OwHpBj4c{W@PxJqCk6d}X$RyKsEl7f1Y%S[LtFn8g2a&T]NvAiVI5",
      "d{W#QxJrDk6e0X$RzKsEm7f1Z^S[MuFn9h2a&U]NvHoAi4c|V@PwIqCj5}ylY%Lt",
      "Em8g1Z^T[MuGo9h3b&U!OvHpBi4c{V@PxIqCk6d}X$QyKsDl7f0Y%SzLtFn2a]NA",
      "h3b|U!OwIpBj5c{W#PxJrCk6e}X$RyKsEm7f1Z%S[MtFn9g2a&T]NvHoAi4V@qdQ",
      "yJrDl6e0Y$RzLsEm8f1Z^S[MuGn9h3a&U!NvHpAi4c|V@PxIqCk5d}X#QK7%tFg2",
      "Z^T]MuGo9h3b&U!OwHpBj4c{W@PxJqCk6d}X$RyKsEl7f1Y%S[LtFn8g2aNvAi|V",
      "!OwIpBj5d{W#QxJrDk6e0X$RzKsEm7f1Z^S[MuFn9h2a&U]NvHoAi4c|V@PqC}yl",
      "7e0Y%RzLtEm8g1Z^T[MuGn9h3b&U!OvHpBi4c{V@PxIqCk6d}X$QyKsDlfSF2a]N",
      "uGoAh3b|U!OwHpBj5c{W#PxJrCk6e}X$RyKsEm7f1Z%S[MtFn9g2a&T]Nvi4V@Iq",
      "Bj5d{W#QyJrDl6e0Y$RzLsEm8f1Z^S[MuGn9h3a&U!NvHpAi4c|V@PxIqCk}XK7%",
      "SzLtFm8g2Z^T]MuGo9h3b&U!OwHpBj4c{W@PxJqCk6d}X$RyKsEl7f1Y%[naNvAi",
      "3b|V!OwIpBj5c{W#QxJrDk6e0X$RzKsEm7f1Z^S[MuFn9h2a&U]NvHoAi4@PqCd}",
      "W#QyJrDl6e0Y%RzLtEm8g1Z^T[MuGn9h3b&U!OvHpBi4c{V@PxIqCkd}X$Ks7fSF",
      "n8g2a^T]NuGoAh3b|U!OwHpBj5c{W#PxJrCk6e}X$RyKsEm7f1Z%S[MtF9&vi4V@",
      "OwIqBj5d{W#QxJrDl6e0Y$RzLsEm8f1Z^S[MuGn9h3a&U!NvHpAi4c|V@PCk}XyK",
      "rDl7e0Y%RzLtFm8g2Z^T]MuGo9h3b&U!OwHpBj4c{W@PxJqCk6d}X$yKsEf1S[na",
      "&T]NvGoAi3b|V!OwIpBj5c{W#QxJrDk6e0X$RzKsEm7f1Z^S[MuFn9h2aUH4@PqC"
   };
   private static final int PERM_ARRAY_CHECKSUM = 173748;
   private static final int ROLL_PERM_ARRAY = 39;

   private static final int[] hexArray = {
      2, 17, 31, 14, 28, 11, 26, 8,
      23, 5, 20, 3, 0, 29, 12, 9,
      6, 21, 18, 15, 30, 27, 24, 7,
      4, 1, 16, 13, 10, 25, 22, 19
   };

