crypto-enigma 0.0.3.1 → 0.1.1.1
raw patch · 7 files changed
+86/−116 lines, 7 filesdep −mtlPVP ok
version bump matches the API change (PVP)
Dependencies removed: mtl
API changes (from Hackage documentation)
- Crypto.Enigma: configEnigmaExcept :: String -> String -> String -> String -> Except EnigmaError EnigmaConfig
- Crypto.Enigma.Display: showEnigmaConfig :: EnigmaConfig -> Char -> String
- Crypto.Enigma.Display: showEnigmaConfigInternal :: EnigmaConfig -> Char -> String
- Crypto.Enigma.Display: showEnigmaEncoding :: EnigmaConfig -> Message -> String
- Crypto.Enigma.Display: showEnigmaOperation :: EnigmaConfig -> Message -> String
- Crypto.Enigma.Display: showEnigmaOperationInternal :: EnigmaConfig -> Message -> String
+ Crypto.Enigma: configEnigma' :: String -> String -> String -> String -> Either EnigmaError EnigmaConfig
Files
- CHANGELOG.md +17/−1
- Crypto/Enigma.hs +21/−21
- Crypto/Enigma/Display.hs +3/−46
- cli/enigma.hs +1/−2
- crypto-enigma.cabal +2/−4
- test/Check.hs +1/−1
- test/Test.hs +41/−41
CHANGELOG.md view
@@ -8,9 +8,24 @@ * [closed milestones]; and * [issues]. +### (0.0.3.?)++* ([First stable release].)+* (Unicode checking for messages and letters.)+* (Force characters into map range or catch indexing errors in encoding.)+* (Further workflow changes: stack integration, Stackage, etc.)++### [0.1.1.1]++Latest [release version], including breaking API changes:++* Change to [handling errors with `Either`](http://hackage.haskell.org/package/mtl-2.2.2/docs/Control-Monad-Except.html#g:3)+ ([rather than](https://stackoverflow.com/a/53456278/656912) `Except`, eliminating the dependency on `mtl`).+* Removal of deprecated display functions from `Crypto.Enigma.Display`.+ ### [0.0.3.1] -Latest [release version] adding [new CLI] with significant+Non-breaking API additions, adding [new CLI] with significant [refactoring and additional features](https://github.com/orome/crypto-enigma-hs/compare/0.0.2.14...0.0.3.1): * [Add](https://github.com/orome/crypto-enigma-hs/issues/13)@@ -136,6 +151,7 @@ [development version]: https://github.com/orome/crypto-enigma-hs/tree/develop [new CLI]: https://github.com/orome/crypto-enigma-hs/tree/new/cli +[0.1.1.1]: https://github.com/orome/crypto-enigma-hs/releases/tag/0.1.1.1 [0.0.3.1]: https://github.com/orome/crypto-enigma-hs/releases/tag/0.0.3.1 [0.0.2.14]: https://github.com/orome/crypto-enigma-hs/releases/tag/0.0.2.14 [0.0.2.13]: https://github.com/orome/crypto-enigma-hs/releases/tag/0.0.2.13
Crypto/Enigma.hs view
@@ -29,7 +29,7 @@ reflectors, -- * Machine configurations and transitions EnigmaConfig,- configEnigmaExcept,+ configEnigma', configEnigma, stages, components,@@ -54,17 +54,13 @@ enigmaEncoding ) where -import Control.Arrow---import Control.Exception (assert)+import Control.Arrow ((&&&)) import Control.Monad (unless)-import Control.Monad.Except---import Control.Monad.Zip---import Control.Applicative import Data.Monoid ((<>)) -- For GHC < 8.4.3 - https://stackoverflow.com/a/53024485/656912-import Data.List+import Data.List (intercalate, nub) import Data.List.Split (splitOn)-import qualified Data.Map as M-import Data.Maybe+import qualified Data.Map as M (Map, fromList, union, keys, lookup, member)+import Data.Maybe (fromMaybe) import Text.Printf (printf) import Data.Char (toUpper) import Data.Text (replace, pack, unpack)@@ -186,7 +182,7 @@ {-| The complete description of the state of an Enigma machine, consisting of 'components', 'positions', and 'rings'. -Two functions ('configEnigmaExcept' and 'configEnigma') are provided for creating 'EnigmaConfig', which differ in+Two functions ('configEnigma'' and 'configEnigma') are provided for creating 'EnigmaConfig', which differ in their handling of errors in the provided arguments specifying the configuration (the only potential source of errors, since all other arguments throught the package are coerced to valid values). -}@@ -333,12 +329,12 @@ e.g., @configEnigma "-" \"A\" "" "01"@), and any number of (non-contradictory) plugboard wirings (including none). Invalid arguments return an 'EnigmaError': ->>> configEnigmaExcept "c-β-V-III-II" "LQVI" "AM.EU.ZiL" "16.01.21.11"-ExceptT (Identity (Left Bad plugboard : AM.EU.ZiL))+>>> configEnigma' "c-β-V-III-II" "LQVI" "AM.EU.ZiL" "16.01.21.11"+Left Bad plugboard: AM.EU.ZiL -} -- REV: Add checks for historical combinations of machine elements?-configEnigmaExcept :: String -> String -> String -> String -> Except EnigmaError EnigmaConfig-configEnigmaExcept rots winds plug rngs = do+configEnigma' :: String -> String -> String -> String -> Either EnigmaError EnigmaConfig+configEnigma' rots winds plug rngs = do unless (and $ (==(length components')) <$> [length winds', length rngs']) (throwError BadNumbers) unless (rngs == (filter (`elem` "0123456789.") rngs)) (throwError (BadRings rngs)) unless (and $ [(>=1),(<=26)] <*> rngs') (throwError (BadRings rngs))@@ -369,7 +365,11 @@ winds' = "A" ++ reverse winds ++ "A" components' = reverse $ splitOn "-" $ rots ++ "-" ++ plug --- Errors for use in configEnigmaExcept+ -- REV: Legacy placeholders from Except to Either change <<<+ throwError = Left --fail.show would lose error type+ return = Right++-- Errors for use in configEnigma' data EnigmaError = BadNumbers | BadRings String | BadWindows String@@ -383,8 +383,8 @@ show BadNumbers = "Numbers of windows, ring settings, and components don't match" show (BadRings s) = "Bad ring settings: " ++ s show (BadWindows s) = "Bad windows: " ++ s- show (BadPlugs s) = "Bad plugboard : " ++ s- show (BadComponents arg s) = "Bad components : " ++ s ++ " in " ++ arg+ show (BadPlugs s) = "Bad plugboard: " ++ s+ show (BadComponents arg s) = "Bad components: " ++ s ++ " in " ++ arg show (BadRotors arg s) = "Bad rotors: " ++ s ++ " in " ++ arg show (BadReflector arg s) = "Bad reflector: " ++ s ++ " in " ++ arg show (MiscError s) = s@@ -392,7 +392,7 @@ {-| Create an 'EnigmaConfig' from a conventional specification. -A thin convenience wrapper on @configEnigmaExcept@ intended for most uses (e.g., interactive) that takes the same+A thin convenience wrapper on @configEnigma'@ intended for most uses (e.g., interactive) that takes the same arguments but errors with an informative message and a stack trace: >>> configEnigma "c-β-V-III-II" "LQVI" "AM.EU.ZiL" "16.01.21.11"@@ -406,7 +406,7 @@ *** Exception: Prelude.read: no parse -} configEnigma :: String -> String -> String -> String -> EnigmaConfig-configEnigma rots winds plug rngs = case runExcept (configEnigmaExcept rots winds plug rngs) of+configEnigma rots winds plug rngs = case configEnigma' rots winds plug rngs of Right cfg -> cfg Left err -> error (show err) @@ -420,13 +420,13 @@ instance Read EnigmaConfig where readsPrec _ i = if ((length $ words i) /= 4) then []- else case runExcept (configEnigmaExcept c w s r) of+ else case configEnigma' c w s r of Right cfg -> [(cfg, "")] Left _ -> [] where [c, w, s, r] = words i {-|-Show the elements of a conventional specification (see 'configEnigmaExcept') joined by spaces into a single string.+Show the elements of a conventional specification (see 'configEnigma'') joined by spaces into a single string. >>> configEnigma "b-β-V-VIII-II" "XQVI" "UX.MO.KZ.AY.EF.PL" "03.17.24.11" "b-β-V-VIII-III XQVI UX.MO.KZ.AY.EF.PL 03.17.24.11"
Crypto/Enigma/Display.hs view
@@ -26,25 +26,19 @@ DisplaySteps, -- * Configuration display displayEnigmaConfig,- showEnigmaConfig,- showEnigmaConfigInternal, -- * Operation display displayEnigmaOperation, listEnigmaOperation,- showEnigmaOperation,- showEnigmaOperationInternal, -- * Encoding display- displayEnigmaEncoding,- showEnigmaEncoding+ displayEnigmaEncoding ) where ---import Control.Applicative import Data.Monoid ((<>)) -- For GHC < 8.4.3 - https://stackoverflow.com/a/53024485/656912---import Data.Char-import Data.List+import Data.List (elemIndex, zipWith5) import Data.List.Split (chunksOf) import Text.Printf (printf) import Data.Char (toLower, isAscii)+ import Crypto.Enigma.Utils import Crypto.Enigma @@ -422,21 +416,7 @@ where p' = if p == 0 then " " else printf "%02d" (p::Int) -{-# DEPRECATED showEnigmaConfig "This has been replaced by 'displayEnigmaConfig'" #-}-{-|-Equivalent to 'displayEnigmaConfig' with @displayOpts{format="single"}@.--}-showEnigmaConfig :: EnigmaConfig -> Char -> String-showEnigmaConfig ec ch = displayEnigmaConfig ec ch displayOpts -{-# DEPRECATED showEnigmaConfigInternal "This has been replaced by 'displayEnigmaConfig'" #-}-{-|-Equivalent to 'displayEnigmaConfig' with @displayOpts{format="internal"}@.--}-showEnigmaConfigInternal :: EnigmaConfig -> Char -> String-showEnigmaConfigInternal ec ch = displayEnigmaConfig ec ch displayOpts{format="internal"}-- -- Operation display --------------------------------------------------------- {-|@@ -592,22 +572,7 @@ fmtN True n = (printf "%04d " n) ++ (if elem (format opts) fmtsInternal_ then "\n" else "") fmtN False _ = "" -{-# DEPRECATED showEnigmaOperation "This has been replaced by 'displayEnigmaOperation'" #-}-{-|-Equivalent to 'displayEnigmaOperation' with @displayOpts{format="single"}@.--}-showEnigmaOperation :: EnigmaConfig -> Message -> String-showEnigmaOperation ec str = displayEnigmaOperation ec str displayOpts{format="single"} --{-# DEPRECATED showEnigmaOperationInternal "This has been replaced by 'displayEnigmaOperation'" #-}-{-|-Equivalent to 'displayEnigmaOperation' with @displayOpts{format="internal"}@.--}-showEnigmaOperationInternal :: EnigmaConfig -> Message -> String-showEnigmaOperationInternal ec str = displayEnigmaOperation ec str displayOpts{format="internal"}-- -- Encoding display ========================================================== {-|@@ -624,12 +589,4 @@ -- Standard formatting of encoded messages --postproc :: String -> String postproc = unlines . chunksOf 60 . unwords . chunksOf 4--{-# DEPRECATED showEnigmaEncoding "This has been replaced by 'displayEnigmaEncoding'" #-}-{-|-Equivalent to 'displayEnigmaEncoding'.--}-showEnigmaEncoding :: EnigmaConfig -> Message -> String-showEnigmaEncoding ec str = displayEnigmaEncoding ec str-
cli/enigma.hs view
@@ -7,7 +7,6 @@ import Data.Monoid ((<>)) -- REV: For GHC 8.0 through 8.2 import Control.Concurrent (threadDelay)-import Control.Monad.Except (runExcept) import Control.Monad (replicateM_) import Crypto.Enigma@@ -135,7 +134,7 @@ configEnigmaFromString :: String -> EnigmaConfig configEnigmaFromString i = if ((length $ words i) /= 4) then cliError ("Enigma machine configuration has the format 'rotors windows plugboard rings'")- else case runExcept (configEnigmaExcept c w s r) of+ else case configEnigma' c w s r of Right cfg -> cfg Left err -> cliError (show err) where [c, w, s, r] = words i
crypto-enigma.cabal view
@@ -3,7 +3,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.0.3.1+version: 0.1.1.1 synopsis: An Enigma machine simulator with display. description: The crypto-enigma package is an Enigma machine simulator with rich display and machine state details.@@ -45,7 +45,7 @@ type: git location: git://github.com/orome/crypto-enigma-hs.git branch: hackage- tag: 0.0.3.1+ tag: 0.1.1.1 library -- default-extensions: Safe@@ -56,7 +56,6 @@ build-depends: base >=4.8.1.0 && <=4.12.0.0, containers >=0.5.5.1, split >=0.2.2,- mtl >=2.2, text >=1.2.2.0 -- hs-source-dirs: default-language: Haskell2010@@ -70,7 +69,6 @@ build-depends: base >=4.8.1.0 && <=4.12.0.0, containers >=0.5.5.1, split >=0.2.2,- mtl >=2.2, text >=1.2.2.0, optparse-applicative >=0.11.0.2, ansi-terminal >=0.6.2.3,
test/Check.hs view
@@ -51,7 +51,7 @@ prop_NoEncodeIsMessage str = enigmaEncoding (configEnigma "----" "AAAA" "" "01.01.01.01") str == message str prop_BadCharIsBlankInConfig :: EnigmaConfig -> BadChar -> Bool-prop_BadCharIsBlankInConfig cfg bchr = showEnigmaConfig cfg (chr bchr) == showEnigmaConfig cfg ' '+prop_BadCharIsBlankInConfig cfg bchr = displayEnigmaConfig cfg (chr bchr) displayOpts == displayEnigmaConfig cfg ' ' displayOpts -- TBD - Confirm that this actually tests == prop_StepEqual :: EnigmaConfig -> Bool
test/Test.hs view
@@ -67,15 +67,15 @@ scfg (lines $ displayEnigmaConfig cfg ch displayOpts{format="internal",markerspec=hl}) -testShowConfig :: EnigmaConfig -> Char -> String -> Test-testShowConfig cfg ch scfg = TestCase $ assertEqual ("Incorrect config display for " ++ show cfg)- scfg- (showEnigmaConfig cfg ch)+-- testShowConfig :: EnigmaConfig -> Char -> String -> Test+-- testShowConfig cfg ch scfg = TestCase $ assertEqual ("Incorrect config display for " ++ show cfg)+-- scfg+-- (showEnigmaConfig cfg ch) -testShowConfigIntenral :: EnigmaConfig -> Char -> [String] -> Test-testShowConfigIntenral cfg ch scfg = TestCase $ assertEqual ("Incorrect internal config display for " ++ show cfg)- scfg- (lines $ showEnigmaConfigInternal cfg ch)+-- testShowConfigIntenral :: EnigmaConfig -> Char -> [String] -> Test+-- testShowConfigIntenral cfg ch scfg = TestCase $ assertEqual ("Incorrect internal config display for " ++ show cfg)+-- scfg+-- (lines $ showEnigmaConfigInternal cfg ch) testDisplayOperation :: EnigmaConfig -> String -> String -> [String] -> Test testDisplayOperation cfg msg hl scfg = TestCase $ assertEqual ("Incorrect operation internal display for " ++ show cfg)@@ -83,25 +83,25 @@ (lines $ displayEnigmaOperation cfg msg displayOpts{format="single",markerspec=hl}) -testShowOperation :: EnigmaConfig -> String -> [String] -> Test-testShowOperation cfg msg sop = TestCase $ assertEqual ("Incorrect operation display for " ++ show cfg)- sop- (lines $ showEnigmaOperation cfg msg)+-- testShowOperation :: EnigmaConfig -> String -> [String] -> Test+-- testShowOperation cfg msg sop = TestCase $ assertEqual ("Incorrect operation display for " ++ show cfg)+-- sop+-- (lines $ showEnigmaOperation cfg msg) testDisplayOperationInternal :: EnigmaConfig -> String -> String -> [String] -> Test testDisplayOperationInternal cfg msg hl scfg = TestCase $ assertEqual ("Incorrect operation internal display for " ++ show cfg) scfg (lines $ displayEnigmaOperation cfg msg displayOpts{format="internal",markerspec=hl}) -testShowOperationInternal :: EnigmaConfig -> String -> [String] -> Test-testShowOperationInternal cfg msg sop = TestCase $ assertEqual ("Incorrect operation internal display for " ++ show cfg)- sop- (lines $ showEnigmaOperationInternal cfg msg)+-- testShowOperationInternal :: EnigmaConfig -> String -> [String] -> Test+-- testShowOperationInternal cfg msg sop = TestCase $ assertEqual ("Incorrect operation internal display for " ++ show cfg)+-- sop+-- (lines $ showEnigmaOperationInternal cfg msg) -testShowEncoding :: EnigmaConfig -> String -> [String] -> Test-testShowEncoding cfg msg senc = TestCase $ assertEqual ("Incorrect encoding display for " ++ show cfg)+testDisplayEncoding :: EnigmaConfig -> String -> [String] -> Test+testDisplayEncoding cfg msg senc = TestCase $ assertEqual ("Incorrect encoding display for " ++ show cfg) senc- (lines $ showEnigmaEncoding cfg msg)+ (lines $ displayEnigmaEncoding cfg msg) testTest :: Test testTest = TestCase $ assertEqual "Should be one" 1 1@@ -114,19 +114,19 @@ putStrLn $ " Rotors:\t" ++ (show rotors) putStrLn $ " Reflectors:\t" ++ (show reflectors) putStrLn "\nInternals display test:"- putStrLn $ showEnigmaConfigInternal (configEnigma "----" "AAAA" "" "01.01.01.01") ' '+ putStrLn $ displayEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") ' ' displayOpts putStrLn "\nDisplay test - '@':"- putStrLn $ showEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") '@'+ putStrLn $ displayEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") '@' displayOpts putStrLn "\nDisplay test - '\\':"- putStrLn $ showEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") '\\'+ putStrLn $ displayEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") '\\' displayOpts putStrLn "\nDisplay test - ' ':"- putStrLn $ showEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") ' '+ putStrLn $ displayEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") ' ' displayOpts putStrLn "\nDisplay test - '.':"- putStrLn $ showEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") '.'+ putStrLn $ displayEnigmaConfig (configEnigma "----" "AAAA" "" "01.01.01.01") '.' displayOpts putStrLn "\nOperation display test:"- putStrLn $ showEnigmaOperation (configEnigma "----" "AAAA" "~" "01.01.10.01") ['A'..'Z']+ putStrLn $ displayEnigmaOperation (configEnigma "----" "AAAA" "~" "01.01.10.01") ['A'..'Z'] displayOpts putStrLn "Encoding display test:"- putStrLn $ showEnigmaEncoding (configEnigma "----" "AAAA" " " "01.01.10.01") (concatMap (replicate 8) ['A'..'Z'])+ putStrLn $ displayEnigmaEncoding (configEnigma "----" "AAAA" " " "01.01.10.01") (concatMap (replicate 8) ['A'..'Z']) results <- runTestTT $ TestList [ testRotorNames,@@ -163,35 +163,35 @@ "E > HEMVB\818\773GFAKZIWCQSXNTORYDLPUJ XYZ 16 01 08", testDisplayConfig (configEnigma "A-I-II-III" "ABC" "OI.XC.QA.PL.FG.ER.TY" "02.07.25") ' ' "single" False "bars" " YPLOUWXRMQTCIZDBJHVKESFGAN ABC 26 22 05",- testShowConfig (configEnigma "C-III-II-I" "XYZ" "MJ.NH.RF.PL.ZS.DC" "09.25.19") 'E'- "E > HEMVB\818\773GFAKZIWCQSXNTORYDLPUJ XYZ 16 01 08",- testShowConfig (configEnigma "A-I-II-III" "ABC" "OI.XC.QA.PL.FG.ER.TY" "02.07.25") ' '- " YPLOUWXRMQTCIZDBJHVKESFGAN ABC 26 22 05",+-- testShowConfig (configEnigma "C-III-II-I" "XYZ" "MJ.NH.RF.PL.ZS.DC" "09.25.19") 'E'+-- "E > HEMVB\818\773GFAKZIWCQSXNTORYDLPUJ XYZ 16 01 08",+-- testShowConfig (configEnigma "A-I-II-III" "ABC" "OI.XC.QA.PL.FG.ER.TY" "02.07.25") ' '+-- " YPLOUWXRMQTCIZDBJHVKESFGAN ABC 26 22 05", testDisplayConfigInternal (configEnigma "b-γ-V-VIII-II" "LFAQ" "UX.MO.KZ.AY.EF.PL" "03.17.04.11") 'K' "bars" ["K > ABCDEFGHIJK\818\773LMNOPQRSTUVWXYZ "," P YBCDFEGHIJZ\818\773PONMLQRSTXVWUAK UX.MO.KZ.AY.EF.PL"," 1 LORVFBQNGWKATHJSZPIYUDXEMC\818\773 Q 07 II"," 2 BJY\818\773INTKWOARFEMVSGCUDPHZQLX A 24 VIII"," 3 ILHXUBZQPNVGKMCRTEJFADOYS\818\773W F 16 V"," 4 YDSKZPTNCHGQOMXAUWJ\818\773FBRELVI L 10 \947"," R ENKQAUYWJI\818\773COPBLMDXZVFTHRGS b"," 4 PUIBWTKJZ\818\773SDXNHMFLVCGQYROAE \947"," 3 UFOVRTLCASMBNJWIHPYQEKZDXG\818\773 V"," 2 JARTMLQ\818\773VDBGYNEIUXKPFSOHZCW VIII"," 1 LFZVXEINSOKAYHBRG\818\773CPMUDJWTQ II"," P YBCDFEG\818\773HIJZPONMLQRSTXVWUAK UX.MO.KZ.AY.EF.PL","G < CMAWFEKLNVG\818\773HBIUYTXZQOJDRPS "], testDisplayConfigInternal (configEnigma "A-I-II-III" "LZR" "OI.XC.QA.PL.FG.ER.TY" "09.02.16") ' ' "bars" [" ABCDEFGHIJKLMNOPQRSTUVWXYZ "," P QBXDRGFHOJKPMNILAESYUVWCTZ OI.XC.QA.PL.FG.ER.TY"," 1 DFHJANPRVTXLWCGUEYIKSQOMZB R 03 III"," 2 QGCLFMUKTWZDNJYVOESIBPRAHX Z 25 II"," 3 CIDANSWKQLTVEURPMXFYOZGBHJ L 04 I"," R EJMZALYXVBWFCRQUONTSPIKHGD A"," 3 DXACMSWYBZHJQEUPIOFKNLGRTV I"," 2 XUCLREBYTNHDFMQVAWSIGPJZOK II"," 1 EZNAQBOCSDTLXFWGVHUJPIMKRY III"," P QBXDRGFHOJKPMNILAESYUVWCTZ OI.XC.QA.PL.FG.ER.TY"," XPOSZNUVJIRQWFCBLKDYGHMATE "],- testShowConfigIntenral (configEnigma "b-γ-V-VIII-II" "LFAQ" "UX.MO.KZ.AY.EF.PL" "03.17.04.11") 'K'- ["K > ABCDEFGHIJK\818\773LMNOPQRSTUVWXYZ "," P YBCDFEGHIJZ\818\773PONMLQRSTXVWUAK UX.MO.KZ.AY.EF.PL"," 1 LORVFBQNGWKATHJSZPIYUDXEMC\818\773 Q 07 II"," 2 BJY\818\773INTKWOARFEMVSGCUDPHZQLX A 24 VIII"," 3 ILHXUBZQPNVGKMCRTEJFADOYS\818\773W F 16 V"," 4 YDSKZPTNCHGQOMXAUWJ\818\773FBRELVI L 10 \947"," R ENKQAUYWJI\818\773COPBLMDXZVFTHRGS b"," 4 PUIBWTKJZ\818\773SDXNHMFLVCGQYROAE \947"," 3 UFOVRTLCASMBNJWIHPYQEKZDXG\818\773 V"," 2 JARTMLQ\818\773VDBGYNEIUXKPFSOHZCW VIII"," 1 LFZVXEINSOKAYHBRG\818\773CPMUDJWTQ II"," P YBCDFEG\818\773HIJZPONMLQRSTXVWUAK UX.MO.KZ.AY.EF.PL","G < CMAWFEKLNVG\818\773HBIUYTXZQOJDRPS "],- testShowConfigIntenral (configEnigma "A-I-II-III" "LZR" "OI.XC.QA.PL.FG.ER.TY" "09.02.16") ' '- [" ABCDEFGHIJKLMNOPQRSTUVWXYZ "," P QBXDRGFHOJKPMNILAESYUVWCTZ OI.XC.QA.PL.FG.ER.TY"," 1 DFHJANPRVTXLWCGUEYIKSQOMZB R 03 III"," 2 QGCLFMUKTWZDNJYVOESIBPRAHX Z 25 II"," 3 CIDANSWKQLTVEURPMXFYOZGBHJ L 04 I"," R EJMZALYXVBWFCRQUONTSPIKHGD A"," 3 DXACMSWYBZHJQEUPIOFKNLGRTV I"," 2 XUCLREBYTNHDFMQVAWSIGPJZOK II"," 1 EZNAQBOCSDTLXFWGVHUJPIMKRY III"," P QBXDRGFHOJKPMNILAESYUVWCTZ OI.XC.QA.PL.FG.ER.TY"," XPOSZNUVJIRQWFCBLKDYGHMATE "],+-- testShowConfigIntenral (configEnigma "b-γ-V-VIII-II" "LFAQ" "UX.MO.KZ.AY.EF.PL" "03.17.04.11") 'K'+-- ["K > ABCDEFGHIJK\818\773LMNOPQRSTUVWXYZ "," P YBCDFEGHIJZ\818\773PONMLQRSTXVWUAK UX.MO.KZ.AY.EF.PL"," 1 LORVFBQNGWKATHJSZPIYUDXEMC\818\773 Q 07 II"," 2 BJY\818\773INTKWOARFEMVSGCUDPHZQLX A 24 VIII"," 3 ILHXUBZQPNVGKMCRTEJFADOYS\818\773W F 16 V"," 4 YDSKZPTNCHGQOMXAUWJ\818\773FBRELVI L 10 \947"," R ENKQAUYWJI\818\773COPBLMDXZVFTHRGS b"," 4 PUIBWTKJZ\818\773SDXNHMFLVCGQYROAE \947"," 3 UFOVRTLCASMBNJWIHPYQEKZDXG\818\773 V"," 2 JARTMLQ\818\773VDBGYNEIUXKPFSOHZCW VIII"," 1 LFZVXEINSOKAYHBRG\818\773CPMUDJWTQ II"," P YBCDFEG\818\773HIJZPONMLQRSTXVWUAK UX.MO.KZ.AY.EF.PL","G < CMAWFEKLNVG\818\773HBIUYTXZQOJDRPS "],+-- testShowConfigIntenral (configEnigma "A-I-II-III" "LZR" "OI.XC.QA.PL.FG.ER.TY" "09.02.16") ' '+-- [" ABCDEFGHIJKLMNOPQRSTUVWXYZ "," P QBXDRGFHOJKPMNILAESYUVWCTZ OI.XC.QA.PL.FG.ER.TY"," 1 DFHJANPRVTXLWCGUEYIKSQOMZB R 03 III"," 2 QGCLFMUKTWZDNJYVOESIBPRAHX Z 25 II"," 3 CIDANSWKQLTVEURPMXFYOZGBHJ L 04 I"," R EJMZALYXVBWFCRQUONTSPIKHGD A"," 3 DXACMSWYBZHJQEUPIOFKNLGRTV I"," 2 XUCLREBYTNHDFMQVAWSIGPJZOK II"," 1 EZNAQBOCSDTLXFWGVHUJPIMKRY III"," P QBXDRGFHOJKPMNILAESYUVWCTZ OI.XC.QA.PL.FG.ER.TY"," XPOSZNUVJIRQWFCBLKDYGHMATE "], testDisplayOperation (configEnigma "c-β-VI-VIII-V" "OMLQ" "AI.JF.CM.DQ.HU.LX.PR.SZ" "03.16.04.11") "UBOOT" "bars" [" LQZRYKTWJIFAXUVSBDPGNOHMEC OMLQ 13 24 09 07","U > TDRBJWSNVEPMLHUKXCGAO\818\773IFQZY OMLR 13 24 09 08","B > VK\818\773JTYSXMLCBIHRZWUNFDQAPGEO OMLS 13 24 09 09","O > VTSFJDZWNEPRUIY\818\773KXLCBMAHQOG OMLT 13 24 09 10","O > VYPSMILKFQHGEZW\818\773CJUDXRAOTBN OMLU 13 24 09 11","T > BARPQGFWLTUIZXVDECYJ\818\773KOHNSM OMLV 13 24 09 12"], testDisplayOperation (configEnigma "b-γ-V-VIII-II" "LFAP" "UX.MO.KZ.AY.EF.PL" "03.17.04.11") "KRIEG" "bars" [" OHNKJYSBTEDMLCARWPGIXZQUFV LFAP 10 16 24 06","K > CMAWFEKLNVG\818\773HBIUYTXZQOJDRPS LFAQ 10 16 24 07","R > HXETCUMASQNZGKRYJO\818\773IDFWVBPL LFAR 10 16 24 08","I > FGRJUABYW\818\773DZSXVQTOCLPENIMHK LFAS 10 16 24 09","E > SJWYN\818\773UZPQBVXRETHIMAOFKCLDG LFAT 10 16 24 10","G > EOKPAQW\818\773JLHCISTBDFVMNXRGUZY LFAU 10 16 24 11"],- testShowOperation (configEnigma "c-β-VI-VIII-V" "OMLQ" "AI.JF.CM.DQ.HU.LX.PR.SZ" "03.16.04.11") "UBOOT"- [" LQZRYKTWJIFAXUVSBDPGNOHMEC OMLQ 13 24 09 07","U > TDRBJWSNVEPMLHUKXCGAO\818\773IFQZY OMLR 13 24 09 08","B > VK\818\773JTYSXMLCBIHRZWUNFDQAPGEO OMLS 13 24 09 09","O > VTSFJDZWNEPRUIY\818\773KXLCBMAHQOG OMLT 13 24 09 10","O > VYPSMILKFQHGEZW\818\773CJUDXRAOTBN OMLU 13 24 09 11","T > BARPQGFWLTUIZXVDECYJ\818\773KOHNSM OMLV 13 24 09 12"],- testShowOperation (configEnigma "b-γ-V-VIII-II" "LFAP" "UX.MO.KZ.AY.EF.PL" "03.17.04.11") "KRIEG"- [" OHNKJYSBTEDMLCARWPGIXZQUFV LFAP 10 16 24 06","K > CMAWFEKLNVG\818\773HBIUYTXZQOJDRPS LFAQ 10 16 24 07","R > HXETCUMASQNZGKRYJO\818\773IDFWVBPL LFAR 10 16 24 08","I > FGRJUABYW\818\773DZSXVQTOCLPENIMHK LFAS 10 16 24 09","E > SJWYN\818\773UZPQBVXRETHIMAOFKCLDG LFAT 10 16 24 10","G > EOKPAQW\818\773JLHCISTBDFVMNXRGUZY LFAU 10 16 24 11"],+-- testShowOperation (configEnigma "c-β-VI-VIII-V" "OMLQ" "AI.JF.CM.DQ.HU.LX.PR.SZ" "03.16.04.11") "UBOOT"+-- [" LQZRYKTWJIFAXUVSBDPGNOHMEC OMLQ 13 24 09 07","U > TDRBJWSNVEPMLHUKXCGAO\818\773IFQZY OMLR 13 24 09 08","B > VK\818\773JTYSXMLCBIHRZWUNFDQAPGEO OMLS 13 24 09 09","O > VTSFJDZWNEPRUIY\818\773KXLCBMAHQOG OMLT 13 24 09 10","O > VYPSMILKFQHGEZW\818\773CJUDXRAOTBN OMLU 13 24 09 11","T > BARPQGFWLTUIZXVDECYJ\818\773KOHNSM OMLV 13 24 09 12"],+-- testShowOperation (configEnigma "b-γ-V-VIII-II" "LFAP" "UX.MO.KZ.AY.EF.PL" "03.17.04.11") "KRIEG"+-- [" OHNKJYSBTEDMLCARWPGIXZQUFV LFAP 10 16 24 06","K > CMAWFEKLNVG\818\773HBIUYTXZQOJDRPS LFAQ 10 16 24 07","R > HXETCUMASQNZGKRYJO\818\773IDFWVBPL LFAR 10 16 24 08","I > FGRJUABYW\818\773DZSXVQTOCLPENIMHK LFAS 10 16 24 09","E > SJWYN\818\773UZPQBVXRETHIMAOFKCLDG LFAT 10 16 24 10","G > EOKPAQW\818\773JLHCISTBDFVMNXRGUZY LFAU 10 16 24 11"], testDisplayOperationInternal (configEnigma "b-β-II-IV-V" "MLKQ" "UJ.LK.BV.SF.ZX.QA" "11.12.19.01") "SIE" "bars" [" ABCDEFGHIJKLMNOPQRSTUVWXYZ "," P QVCDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 KGWTAYPOMUFJLBQSDIEZCNXRVH Q 17 V"," 2 BOSLKUEJMAWDXHRIGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLHWTMCQGZNPYFVOE L 01 II"," 4 WHTALGVUNZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVFTHRGS b"," 4 DMZTSVFBQYLEWIKNXOUCHGARPJ \946"," 3 AJPCZWRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKMRU IV"," 1 ENUQSKBZRLAMIVHGOXPDJYCWFT V"," P QVCDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," IENSBJTYAFXQUCZVLWDGMPRKHO ","","S > ABCDEFGHIJKLMNOPQRS\818\773TUVWXYZ "," P QVCDESGHIULKMNOPARF\818\773TJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 FVSZXO\818\773NLTEIKAPRCHDYBMWQUGJ R 18 V"," 2 BOSLKUEJMAWDXHR\818\773IGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLHWTMCQG\818\773ZNPYFVOE L 01 II"," 4 WHTALGV\818\773UNZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVFT\818\773HRGS b"," 4 DMZTSVFBQYLEWIKNXOUC\818\773HGARPJ \946"," 3 AJP\818\773CZWRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBV\818\773TOCXFYKMRU IV"," 1 MTPRJAYQKZLHUGFNWOCIXB\818\773VESD V"," P QV\818\773CDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA","V < XTYNLIMZFRQEGDWUKJV\818\773BPSOACH ","","I > ABCDEFGHI\818\773JKLMNOPQRSTUVWXYZ "," P QVCDESGHI\818\773ULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 URYWNMKSD\818\773HJZOQBGCXALVPTFIE S 19 V"," 2 BOSL\818\773KUEJMAWDXHRIGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLH\818\773WTMCQGZNPYFVOE L 01 II"," 4 WHTALGVU\818\773NZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVF\818\773THRGS b"," 4 DMZTSV\818\773FBQYLEWIKNXOUCHGARPJ \946"," 3 AJPCZWRLFBDKOTYUQGENHX\818\773MIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKM\818\773RU IV"," 1 SOQIZXPJYKGTF\818\773EMVNBHWAUDRCL V"," P QVCDES\818\773GHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA","S < XKWOFEZPS\818\773MBUJVDHTYIQLNCARG ","","E > ABCDE\818\773FGHIJKLMNOPQRSTUVWXYZ "," P QVCDE\818\773SGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 QXVML\818\773JRCGIYNPAFBWZKUOSEHDT T 20 V"," 2 BOSLKUEJMAWD\818\773XHRIGYCQZPFTVN K 19 IV"," 3 AJDK\818\773SIRUXBLHWTMCQGZNPYFVOE L 01 II"," 4 WHTALGVUNZO\818\773KBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBL\818\773MDXZVFTHRGS b"," 4 DMZTSVFBQYLE\818\773WIKNXOUCHGARPJ \946"," 3 AJPCZ\818\773WRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKMRU\818\773 IV"," 1 NPHYWOIXJFSEDLUMAGVZT\818\773CQBKR V"," P QVCDESGHIULKMNOPARFT\818\773JBWZYX UJ.LK.BV.SF.ZX.QA","T < PIJYT\818\773OQWBCNXRKFAGMZEVUHLDS ",""],- testShowOperationInternal (configEnigma "b-β-II-IV-V" "MLKQ" "UJ.LK.BV.SF.ZX.QA" "11.12.19.01") "SIE"- [" ABCDEFGHIJKLMNOPQRSTUVWXYZ "," P QVCDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 KGWTAYPOMUFJLBQSDIEZCNXRVH Q 17 V"," 2 BOSLKUEJMAWDXHRIGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLHWTMCQGZNPYFVOE L 01 II"," 4 WHTALGVUNZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVFTHRGS b"," 4 DMZTSVFBQYLEWIKNXOUCHGARPJ \946"," 3 AJPCZWRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKMRU IV"," 1 ENUQSKBZRLAMIVHGOXPDJYCWFT V"," P QVCDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," IENSBJTYAFXQUCZVLWDGMPRKHO ","","S > ABCDEFGHIJKLMNOPQRS\818\773TUVWXYZ "," P QVCDESGHIULKMNOPARF\818\773TJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 FVSZXO\818\773NLTEIKAPRCHDYBMWQUGJ R 18 V"," 2 BOSLKUEJMAWDXHR\818\773IGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLHWTMCQG\818\773ZNPYFVOE L 01 II"," 4 WHTALGV\818\773UNZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVFT\818\773HRGS b"," 4 DMZTSVFBQYLEWIKNXOUC\818\773HGARPJ \946"," 3 AJP\818\773CZWRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBV\818\773TOCXFYKMRU IV"," 1 MTPRJAYQKZLHUGFNWOCIXB\818\773VESD V"," P QV\818\773CDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA","V < XTYNLIMZFRQEGDWUKJV\818\773BPSOACH ","","I > ABCDEFGHI\818\773JKLMNOPQRSTUVWXYZ "," P QVCDESGHI\818\773ULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 URYWNMKSD\818\773HJZOQBGCXALVPTFIE S 19 V"," 2 BOSL\818\773KUEJMAWDXHRIGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLH\818\773WTMCQGZNPYFVOE L 01 II"," 4 WHTALGVU\818\773NZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVF\818\773THRGS b"," 4 DMZTSV\818\773FBQYLEWIKNXOUCHGARPJ \946"," 3 AJPCZWRLFBDKOTYUQGENHX\818\773MIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKM\818\773RU IV"," 1 SOQIZXPJYKGTF\818\773EMVNBHWAUDRCL V"," P QVCDES\818\773GHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA","S < XKWOFEZPS\818\773MBUJVDHTYIQLNCARG ","","E > ABCDE\818\773FGHIJKLMNOPQRSTUVWXYZ "," P QVCDE\818\773SGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 QXVML\818\773JRCGIYNPAFBWZKUOSEHDT T 20 V"," 2 BOSLKUEJMAWD\818\773XHRIGYCQZPFTVN K 19 IV"," 3 AJDK\818\773SIRUXBLHWTMCQGZNPYFVOE L 01 II"," 4 WHTALGVUNZO\818\773KBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBL\818\773MDXZVFTHRGS b"," 4 DMZTSVFBQYLE\818\773WIKNXOUCHGARPJ \946"," 3 AJPCZ\818\773WRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKMRU\818\773 IV"," 1 NPHYWOIXJFSEDLUMAGVZT\818\773CQBKR V"," P QVCDESGHIULKMNOPARFT\818\773JBWZYX UJ.LK.BV.SF.ZX.QA","T < PIJYT\818\773OQWBCNXRKFAGMZEVUHLDS ",""],+-- testShowOperationInternal (configEnigma "b-β-II-IV-V" "MLKQ" "UJ.LK.BV.SF.ZX.QA" "11.12.19.01") "SIE"+-- [" ABCDEFGHIJKLMNOPQRSTUVWXYZ "," P QVCDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 KGWTAYPOMUFJLBQSDIEZCNXRVH Q 17 V"," 2 BOSLKUEJMAWDXHRIGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLHWTMCQGZNPYFVOE L 01 II"," 4 WHTALGVUNZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVFTHRGS b"," 4 DMZTSVFBQYLEWIKNXOUCHGARPJ \946"," 3 AJPCZWRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKMRU IV"," 1 ENUQSKBZRLAMIVHGOXPDJYCWFT V"," P QVCDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," IENSBJTYAFXQUCZVLWDGMPRKHO ","","S > ABCDEFGHIJKLMNOPQRS\818\773TUVWXYZ "," P QVCDESGHIULKMNOPARF\818\773TJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 FVSZXO\818\773NLTEIKAPRCHDYBMWQUGJ R 18 V"," 2 BOSLKUEJMAWDXHR\818\773IGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLHWTMCQG\818\773ZNPYFVOE L 01 II"," 4 WHTALGV\818\773UNZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVFT\818\773HRGS b"," 4 DMZTSVFBQYLEWIKNXOUC\818\773HGARPJ \946"," 3 AJP\818\773CZWRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBV\818\773TOCXFYKMRU IV"," 1 MTPRJAYQKZLHUGFNWOCIXB\818\773VESD V"," P QV\818\773CDESGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA","V < XTYNLIMZFRQEGDWUKJV\818\773BPSOACH ","","I > ABCDEFGHI\818\773JKLMNOPQRSTUVWXYZ "," P QVCDESGHI\818\773ULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 URYWNMKSD\818\773HJZOQBGCXALVPTFIE S 19 V"," 2 BOSL\818\773KUEJMAWDXHRIGYCQZPFTVN K 19 IV"," 3 AJDKSIRUXBLH\818\773WTMCQGZNPYFVOE L 01 II"," 4 WHTALGVU\818\773NZOKBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBLMDXZVF\818\773THRGS b"," 4 DMZTSV\818\773FBQYLEWIKNXOUCHGARPJ \946"," 3 AJPCZWRLFBDKOTYUQGENHX\818\773MIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKM\818\773RU IV"," 1 SOQIZXPJYKGTF\818\773EMVNBHWAUDRCL V"," P QVCDES\818\773GHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA","S < XKWOFEZPS\818\773MBUJVDHTYIQLNCARG ","","E > ABCDE\818\773FGHIJKLMNOPQRSTUVWXYZ "," P QVCDE\818\773SGHIULKMNOPARFTJBWZYX UJ.LK.BV.SF.ZX.QA"," 1 QXVML\818\773JRCGIYNPAFBWZKUOSEHDT T 20 V"," 2 BOSLKUEJMAWD\818\773XHRIGYCQZPFTVN K 19 IV"," 3 AJDK\818\773SIRUXBLHWTMCQGZNPYFVOE L 01 II"," 4 WHTALGVUNZO\818\773KBPRYIXEDSFMQJC M 03 \946"," R ENKQAUYWJICOPBL\818\773MDXZVFTHRGS b"," 4 DMZTSVFBQYLE\818\773WIKNXOUCHGARPJ \946"," 3 AJPCZ\818\773WRLFBDKOTYUQGENHXMIVS II"," 2 JASLGWQNPHEDIZBVTOCXFYKMRU\818\773 IV"," 1 NPHYWOIXJFSEDLUMAGVZT\818\773CQBKR V"," P QVCDESGHIULKMNOPARFT\818\773JBWZYX UJ.LK.BV.SF.ZX.QA","T < PIJYT\818\773OQWBCNXRKFAGMZEVUHLDS ",""], - testShowEncoding (configEnigma "c-β-V-VI-VIII" (enigmaEncoding (configEnigma "c-β-V-VI-VIII" "NAEM" "AE.BF.CM.DQ.HU.JN.LX.PR.SZ.VW" "05.16.05.12") "QEOB") "AE.BF.CM.DQ.HU.JN.LX.PR.SZ.VW" "05.16.05.12")+ testDisplayEncoding (configEnigma "c-β-V-VI-VIII" (enigmaEncoding (configEnigma "c-β-V-VI-VIII" "NAEM" "AE.BF.CM.DQ.HU.JN.LX.PR.SZ.VW" "05.16.05.12") "QEOB") "AE.BF.CM.DQ.HU.JN.LX.PR.SZ.VW" "05.16.05.12") "KRKR ALLE XX FOLGENDES IST SOFORT BEKANNTZUGEBEN XX ICH HABE FOLGELNBE BEFEHL ERHALTEN XX J ANSTERLE DES BISHERIGXN REICHSMARSCHALLS J GOERING J SETZT DER FUEHRER SIE Y HVRR GRZSSADMIRAL Y ALS SEINEN NACHFOLGER EIN X SCHRIFTLSCHE VOLLMACHT UNTERWEGS X ABSOFORT SOLLEN SIE SAEMTLICHE MASSNAHMEN VERFUEGEN Y DIE SICH AUS DER GEGENWAERTIGEN LAGE ERGEBEN X GEZ X REICHSLEITEI KK TULPE KK J BORMANN J XX OB.D.MMM DURNH FKST.KOM.ADM.UUU BOOIE.KP" ["LANO TCTO UARB BFPM HPHG CZXT DYGA HGUF XGEW KBLK GJWL QXXT ","GPJJ AVTO CKZF SLPP QIHZ FXOE BWII EKFZ LCLO AQJU LJOY HSSM ","BBGW HZAN VOII PYRB RTDJ QDJJ OQKC XWDN BBTY VXLY TAPG VEAT ","XSON PNYN QFUD BBHH VWEP YEYD OHNL XKZD NWRH DUWU JUMW WVII ","WZXI VIUQ DRHY MNCY EFUA PNHO TKHK GDNP SAKN UAGH JZSM JBMH ","VTRE QEDG XHLZ WIFU SKDQ VELN MIMI THBH DBWV HDFY HJOQ IHOR ","TDJD BWXE MEAY XGYQ XOHF DMYU XXNO JAZR SGHP LWML RECW WUTL ","RTTV LBHY OORG LGOW UXNX HMHY FAAC QEKT HSJW"], testTest]