From d4dbe95819577b5fe19884e4b0d21756712732e4 Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Wed, 27 Mar 2013 23:43:11 -0400 Subject: [PATCH] Add some multiblock test cases --- build-and-test.sh | 6 ++++++ test-vectors | 28 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/build-and-test.sh b/build-and-test.sh index bd1778b..0cfb9c4 100755 --- a/build-and-test.sh +++ b/build-and-test.sh @@ -11,9 +11,15 @@ i=1 # Read test vectors from a file and test them. # +# This includes the NIST test vectors [1] as well as some multiblock +# test cases generated by me. +# # These are stored as octal escapes because POSIX printf(1) lacks # \x syntax. Never mind that the binaries are for amd64 Linux # only; the test script must be as portable as possible! +# +# [1] http://csrc.nist.gov/groups/STM/cavp/documents/aes/KAT_AES.zip + cat test-vectors | while read -r key plaintext ciphertext; do printf "\rTesting %3d of %3d" $i $n diff --git a/test-vectors b/test-vectors index 9111541..b066562 100644 --- a/test-vectors +++ b/test-vectors @@ -282,3 +282,31 @@ \377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\374 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \002\274\226\204\153\077\334\161\144\077\070\114\323\314\076\257 \377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \233\244\251\024\077\116\135\100\110\122\034\117\210\167\330\216 \377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \241\366\045\214\207\175\137\315\211\144\110\105\070\277\311\054 +\341\050\327\141\161\376\046\235\050\305\335\115\230\251\230\367 \352\254\376\011\307\143\354\157\011\325\273\347\363\232\065\211\010\203\226\124\050\156\162\237\006\223\147\355\177\000\157\305 \372\044\341\004\065\156\203\132\247\201\076\350\175\376\126\275\352\246\011\011\213\174\150\307\131\162\124\140\375\263\346\261 +\365\235\274\366\047\065\252\356\046\352\113\063\364\220\245\361 \165\251\177\033\315\346\170\013\316\270\057\377\260\057\046\022\342\241\302\306\374\227\011\132\164\320\166\135\351\325\342\305 \351\373\326\267\137\252\316\032\246\351\014\126\302\044\375\276\064\100\301\113\166\041\202\335\013\266\250\030\163\225\233\170 +\212\256\115\242\064\165\027\341\313\045\032\174\210\154\025\100 \063\113\221\053\037\306\252\167\034\322\207\050\254\347\243\071\175\334\302\221\366\234\153\002\044\352\324\104\344\264\212\333 \216\326\034\042\120\342\340\027\222\206\060\303\307\076\156\303\006\015\331\341\166\357\276\041\274\105\331\121\040\240\345\142 +\165\317\207\275\003\221\313\267\145\377\116\137\373\101\025\323 \252\357\351\257\263\317\157\041\144\276\174\272\147\135\221\255\213\103\354\344\332\141\010\053\371\120\355\101\235\066\137\253 \276\007\052\343\141\121\333\361\255\033\111\134\250\102\306\122\344\323\142\160\200\234\020\244\220\376\340\204\221\012\227\060 +\241\351\067\374\030\222\176\020\075\306\045\323\147\306\335\120 \125\367\017\227\061\113\135\001\116\137\132\062\131\251\176\316\301\241\345\373\312\131\367\214\127\267\162\072\142\335\307\336\234\077\202\161\132\236\203\012\314\315\177\323\147\117\334\107 \346\125\277\067\246\205\006\124\134\300\277\144\245\225\000\016\133\030\163\011\016\056\026\146\345\154\265\145\132\234\341\046\160\153\174\243\252\305\017\213\210\266\102\140\111\002\046\312 +\306\226\350\106\012\116\143\202\044\331\155\121\220\016\033\335 \336\062\201\272\212\055\247\175\025\256\341\071\321\061\350\107\353\300\167\323\025\316\044\367\162\001\245\363\024\174\367\121\130\011\121\150\366\177\226\351\124\050\221\071\053\136\354\353 \112\030\334\063\352\362\317\200\037\021\044\200\056\260\351\136\303\347\362\274\320\050\061\060\317\055\001\047\222\040\120\346\077\357\245\274\156\131\076\037\340\076\270\011\370\342\260\335 +\346\311\074\331\002\271\036\236\336\025\377\246\256\353\136\332 \110\364\010\273\375\036\062\043\024\311\317\316\053\217\017\236\064\353\360\270\135\250\305\067\263\153\164\134\123\335\250\141\162\005\150\236\300\056\256\047\301\114\013\367\060\132\263\277 \322\305\361\325\341\212\060\341\377\116\372\156\346\316\315\167\131\236\215\317\120\330\300\257\004\027\102\160\161\377\262\161\222\232\360\165\127\310\203\020\060\266\151\231\255\031\057\167 +\071\203\373\004\363\256\112\007\305\031\124\316\155\150\020\204 \266\202\113\327\221\225\210\041\176\223\277\057\315\340\236\054\013\360\235\346\221\241\031\241\274\302\357\212\057\250\325\021\351\022\104\307\214\011\167\174\344\270\076\261\113\001\273\336 \027\235\265\225\231\050\234\014\036\113\036\034\305\177\207\156\062\027\154\313\027\173\363\171\373\224\024\274\006\054\237\117\225\032\216\236\103\344\142\365\077\253\242\302\041\237\164\124 +\101\223\333\241\253\166\044\102\372\233\363\330\152\301\273\377 \376\364\312\313\061\243\115\236\110\134\255\304\042\016\124\254\046\043\276\174\000\023\101\310\163\270\036\363\342\300\307\251\016\157\056\246\005\144\276\311\056\110\055\217\103\150\317\132\111\053\356\335\070\211\343\146\201\065\010\374\260\207\043\306 \223\367\176\061\261\273\152\053\060\235\242\117\272\034\070\130\164\376\167\151\314\336\305\151\364\051\201\244\067\033\036\170\051\101\355\301\205\200\107\137\124\142\216\110\012\125\035\206\061\372\264\221\127\263\376\105\265\042\131\031\301\256\006\327 +\062\221\120\367\264\301\237\013\066\345\257\352\066\003\364\065 \140\327\012\224\054\232\022\111\307\027\056\251\241\044\143\122\256\232\157\166\110\113\106\004\346\231\123\240\112\302\301\357\150\221\374\331\031\343\366\154\025\036\007\035\015\077\353\016\256\036\272\220\164\163\113\171\234\356\102\221\243\371\047\131 \023\161\211\103\230\044\015\032\127\312\053\360\112\167\165\121\120\125\366\203\044\326\025\027\011\036\252\156\365\306\115\246\162\117\145\021\125\260\124\303\366\351\310\371\260\356\161\151\342\002\205\366\327\013\061\127\243\034\003\030\036\054\342\372 +\174\221\146\065\356\171\224\053\141\237\004\011\344\354\033\157 \174\107\110\077\016\022\163\104\062\143\374\153\206\033\172\315\146\135\121\131\304\352\117\236\106\251\000\243\341\030\333\347\266\100\045\075\357\300\236\165\162\361\305\340\254\371\162\023\153\242\036\222\310\333\305\120\301\151\201\044\252\053\105\113 \113\172\144\344\277\257\242\077\327\361\142\072\161\074\300\052\101\333\322\257\247\261\130\036\372\042\142\033\332\322\061\376\372\164\013\133\110\361\112\042\135\041\127\301\310\262\371\255\070\160\111\042\333\335\142\345\035\060\253\074\175\301\227\272 +\352\257\046\007\205\166\022\025\250\115\247\260\143\055\010\230 \074\167\244\107\302\254\017\157\027\255\063\023\250\062\366\061\331\066\165\161\327\171\026\310\243\034\151\232\154\140\275\123\206\216\142\244\354\000\006\175\104\347\260\244\366\276\234\367\171\100\171\266\121\025\370\155\310\341\376\002\022\232\366\041 \271\014\062\063\157\147\026\134\232\122\224\206\274\202\234\333\212\205\064\251\207\312\376\257\362\041\041\002\364\306\070\367\055\060\357\355\316\016\126\333\205\327\107\362\271\001\164\125\242\211\353\377\371\117\325\341\327\101\152\006\311\330\337\376 +\266\004\002\047\254\172\170\020\365\047\377\310\374\125\220\072 \162\025\202\067\176\153\125\150\363\036\235\162\366\320\276\075\021\235\246\314\345\212\344\366\357\005\371\010\002\214\162\103\325\123\236\101\012\005\136\336\163\013\156\160\164\236\374\064\164\275\206\066\246\352\312\360\214\352\317\147\016\200\340\333\371\113\216\134\300\156\004\316\046\041\240\375\361\326\100\372 \256\150\232\100\373\302\252\103\333\101\111\244\252\125\373\351\032\062\043\105\032\120\127\322\121\044\237\111\314\137\277\121\073\215\166\076\060\077\161\253\131\307\231\277\243\233\133\201\226\353\116\166\157\376\132\071\364\335\136\216\232\042\332\040\277\330\362\041\013\155\273\310\073\030\154\144\001\314\244\337 +\006\363\223\173\207\231\256\352\234\207\023\114\335\123\266\300 \321\262\361\220\216\116\076\376\221\215\377\265\140\231\175\270\321\230\244\112\313\267\112\143\264\302\333\375\212\144\315\271\251\235\164\300\245\241\166\024\310\002\335\125\315\313\177\050\077\201\206\060\316\132\247\174\224\007\106\234\101\250\357\022\371\175\057\165\030\342\017\265\263\023\263\165\245\160\177\135 \173\207\107\032\073\247\167\257\354\015\010\142\127\335\371\246\322\041\342\106\327\273\335\337\342\301\033\030\170\354\252\107\012\317\014\340\204\106\164\377\306\021\262\221\064\123\125\311\355\350\346\076\267\210\253\211\011\155\224\347\302\017\240\324\016\123\214\250\227\014\370\060\117\161\123\246\120\034\230\131 +\113\177\262\226\130\065\034\065\302\176\354\016\176\206\037\021 \044\165\111\135\065\141\154\124\127\130\151\221\321\301\207\247\065\353\253\022\361\126\204\167\240\302\263\314\303\361\360\160\226\363\315\134\155\376\151\126\136\024\357\303\314\231\157\141\044\315\357\321\331\331\324\020\061\066\127\013\311\073\073\310\040\037\211\301\367\172\220\200\113\066\135\320\047\214\001\207 \052\363\073\121\027\302\355\062\053\307\011\133\077\146\036\131\364\045\340\107\162\036\355\066\045\366\244\025\043\012\332\073\152\273\244\265\362\037\174\253\206\332\023\056\351\336\067\240\167\200\057\322\200\127\055\251\322\323\216\145\131\043\254\061\146\106\351\273\027\324\000\165\270\111\346\166\231\215\313\172 +\142\035\265\173\320\056\272\275\242\340\005\012\214\056\075\310 \246\111\354\247\032\271\215\326\377\274\071\130\005\227\164\222\263\315\104\231\170\014\035\325\374\170\241\045\005\060\104\030\364\055\210\240\346\230\025\254\024\311\367\210\032\052\305\164\170\165\301\003\372\313\263\353\142\373\220\276\027\045\343\150\347\172\307\030\246\366\176\342\372\054\273\326\302\314\362\154 \033\007\211\232\277\073\375\276\321\130\002\131\357\125\334\221\144\337\357\173\120\355\260\352\140\050\243\100\047\111\143\025\130\146\315\270\031\242\360\270\033\112\242\263\072\204\232\165\034\205\256\377\251\244\166\062\222\313\326\212\154\357\123\350\067\145\041\223\267\355\237\165\046\311\142\236\160\372\161\253 +\144\203\373\204\235\354\352\262\315\035\005\272\141\353\373\234 \130\014\140\303\126\350\145\164\232\061\266\321\122\123\070\330\315\167\206\024\266\314\202\002\051\331\004\175\140\115\017\047\037\077\161\071\257\012\373\206\272\156\243\373\070\017\213\344\361\251\110\005\115\256\030\363\200\316\131\165\065\311\327\115\172\247\163\020\310\022\271\021\377\063\351\056\304\036\162\124\004\241\342\330\246\223\150\232\113\177\044\164\117\317\116\017 \156\274\076\142\247\243\144\226\272\037\036\341\036\311\174\030\250\260\074\364\341\000\151\052\026\256\372\010\351\275\170\137\370\373\273\331\315\011\134\051\015\121\351\123\117\321\205\031\151\116\120\047\035\074\077\344\276\147\151\043\221\273\300\106\333\132\037\256\202\303\257\024\207\157\345\136\232\202\242\070\014\141\033\355\203\307\312\346\150\015\111\052\231\316\171\207 +\020\132\136\376\127\131\107\011\227\312\155\356\371\152\032\122 \116\030\257\320\243\302\215\250\364\357\032\131\323\205\123\100\367\255\105\215\070\250\165\152\213\150\246\324\313\066\340\346\017\102\302\243\241\321\210\155\052\267\327\354\260\316\306\217\172\041\256\315\224\063\070\347\007\232\233\204\232\073\236\331\021\156\067\170\263\205\220\006\330\251\023\216\153\243\000\321\077\377\075\262\353\235\016\205\200\133\367\213\164\323\117\251 \272\123\220\073\025\033\060\237\016\330\010\114\336\071\132\033\025\231\202\363\070\105\157\243\012\247\053\371\341\175\145\002\121\136\107\032\351\121\201\176\031\106\220\003\275\245\173\251\315\022\230\151\375\371\217\240\360\377\056\372\244\027\347\264\264\307\212\075\236\303\115\265\203\203\172\030\261\132\061\071\273\147\336\205\022\301\000\161\241\143\351\156\304\321\042\312 +\266\273\336\020\230\316\101\141\045\346\177\213\344\357\263\221 \363\251\162\337\305\252\101\251\163\275\341\147\021\326\044\236\042\214\355\254\314\245\274\374\227\306\303\372\070\172\372\007\005\205\064\207\377\076\041\163\122\063\145\347\364\272\057\102\041\013\013\206\214\204\067\204\327\162\160\057\315\314\173\164\030\041\031\361\300\225\116\123\136\354\016\105\150\177\335\331\172\207\113\237\026\005\165\033\032\176\043\124\331\373\223\342 \115\175\143\152\137\173\073\054\323\216\130\336\237\213\172\216\233\010\221\046\302\057\236\040\237\141\234\350\254\260\243\231\113\046\262\253\270\275\254\137\023\010\372\124\224\235\065\157\034\161\140\012\161\125\065\314\377\152\055\005\007\043\125\225\233\013\053\215\214\154\066\157\025\325\261\316\334\234\051\012\123\201\070\316\356\017\147\266\025\142\215\332\247\255\001\263 +\173\011\303\224\376\061\053\321\366\343\224\216\141\063\142\103 \350\107\170\214\133\237\077\365\274\067\102\344\010\225\300\260\207\103\040\304\334\115\206\253\355\150\275\010\100\206\207\273\214\077\023\025\246\313\266\076\214\224\277\030\075\375\121\324\257\253\115\071\146\370\254\113\153\166\071\251\132\247\142\147\001\170\361\103\022\110\212\154\244\134\076\007\232\321\333\110\100\101\274\022\264\132\160\167\050\243\116\055\063\250\325\370 \111\003\123\043\060\211\254\020\037\205\006\135\304\333\263\117\217\157\202\120\021\376\252\014\015\267\232\060\224\141\031\170\363\103\077\104\133\022\063\224\233\175\357\303\010\226\066\301\261\203\014\014\004\077\114\104\252\332\015\015\165\135\172\321\366\316\373\027\301\341\371\313\124\012\277\154\163\064\041\275\217\330\226\325\376\354\213\031\154\106\331\111\376\330\336\306 +\254\333\241\356\244\031\076\116\142\114\052\325\041\325\333\366 \143\154\163\234\003\167\322\040\060\040\276\324\206\234\245\021\272\233\373\254\334\311\254\250\056\031\353\301\353\322\227\131\231\021\165\010\336\223\265\177\200\017\005\377\334\035\335\135\051\004\265\323\376\003\006\311\203\105\115\333\041\000\033\050\242\213\234\121\154\120\071\056\277\077\042\121\046\114\362\316\327\273\277\025\002\035\335\200\200\043\171\374\276\036\276\004\340\021\246\045\324\122\064\263\343\062\004\021\210\013\225\153 \262\000\320\055\236\115\246\023\027\200\114\003\325\341\216\354\201\200\010\167\176\061\374\355\001\160\127\006\251\260\042\267\215\251\245\317\275\351\304\326\104\156\167\033\100\132\330\251\173\313\224\204\242\062\300\045\317\042\307\337\336\106\204\057\030\256\052\257\257\234\324\326\121\010\331\050\020\221\044\172\356\346\132\226\315\142\033\060\157\255\204\100\302\051\131\145\153\154\071\242\155\141\347\324\043\007\027\106\213\065\367\310 +\043\052\215\202\267\276\241\227\153\242\377\312\263\343\115\223 \175\377\345\167\145\150\314\272\232\321\012\241\367\325\060\203\070\224\317\146\126\367\137\147\255\021\045\020\322\307\051\146\301\137\367\361\112\053\004\131\105\236\220\262\214\074\111\005\025\121\011\176\111\033\272\050\354\042\004\021\166\126\065\353\061\167\253\212\226\230\313\312\054\340\274\224\355\073\272\271\363\054\137\041\076\306\371\161\126\354\172\152\000\255\054\201\263\035\234\357\315\263\246\030\013\170\233\336\262\064\173\204 \313\316\272\245\325\063\006\252\060\366\053\342\035\266\375\374\134\372\206\257\235\305\133\372\132\260\342\266\111\352\362\054\370\145\073\232\213\300\107\075\171\353\347\172\052\344\154\343\101\211\160\312\156\101\062\244\000\246\220\042\011\235\130\337\317\014\111\005\206\114\175\165\066\330\041\325\377\253\247\124\113\166\337\072\012\033\143\247\020\375\142\204\221\124\027\066\360\127\324\022\206\125\236\027\027\060\074\073\244\175\116\345 +\014\224\005\020\225\144\231\224\036\133\321\337\213\114\017\016 \331\227\235\140\043\114\323\230\363\350\305\025\141\071\017\250\025\135\164\316\277\222\362\233\231\142\240\324\000\337\013\041\134\340\271\151\341\212\314\231\027\051\116\260\211\145\313\120\325\300\356\357\277\241\041\245\006\212\141\353\370\124\010\162\110\200\321\013\032\366\350\061\014\077\340\347\330\254\243\074\004\117\360\276\326\134\160\212\333\361\354\155\235\236\177\030\144\010\063\330\222\275\021\014\013\042\270\311\115\200\102\261 \267\377\371\136\314\211\327\013\216\112\353\252\330\312\127\317\366\064\173\234\154\327\222\033\155\312\126\245\222\224\265\264\176\106\213\326\332\066\107\222\047\121\157\325\003\242\223\012\315\325\333\142\266\114\077\217\376\162\252\003\357\255\043\145\376\241\372\276\122\022\032\363\340\171\006\340\316\125\064\275\024\337\167\373\123\065\116\043\175\172\176\263\106\053\361\204\061\100\101\270\007\215\267\057\333\110\022\004\065\365\336\275 +\336\125\140\336\040\176\214\366\352\132\370\024\055\277\237\310 \247\244\336\332\274\321\200\261\212\221\162\122\356\004\270\007\014\351\276\307\320\161\364\332\001\322\254\034\056\162\031\056\043\112\236\325\313\040\162\206\247\173\134\245\257\253\355\115\164\265\332\272\303\067\346\206\366\002\224\253\034\043\171\045\363\370\355\336\034\061\110\101\373\011\211\343\315\365\007\164\105\337\227\322\175\050\102\054\110\123\156\163\210\364\014\116\132\173\053\213\340\133\374\045\041\124\020\346\201\131\253\044 \021\314\021\136\222\344\137\161\215\360\172\243\020\334\106\344\310\124\102\333\174\372\245\022\301\227\111\230\344\145\145\164\363\251\253\166\171\075\375\300\044\361\125\111\023\014\077\200\044\114\356\354\131\127\264\151\247\346\334\137\263\114\353\264\343\113\035\304\372\215\342\234\344\150\116\223\302\115\241\224\121\253\121\256\303\170\304\355\312\220\027\367\336\200\032\045\052\274\242\214\017\100\312\144\265\070\350\074\045\263\214\064 +\036\044\152\317\146\145\060\007\055\160\223\157\130\062\220\302 \135\035\126\011\317\076\034\050\067\204\041\364\131\011\336\231\360\100\101\171\344\000\346\274\200\022\056\252\305\341\314\174\135\315\232\070\132\031\231\214\150\016\216\047\353\252\327\342\002\174\041\045\073\060\071\130\325\330\141\064\076\007\031\077\135\103\345\051\047\266\244\006\152\221\271\227\337\004\316\316\153\144\164\220\303\351\364\331\346\337\342\102\172\142\063\270\310\302\277\025\103\042\051\262\234\244\060\036\247\374\154\217\002\066\144\065\161\154\130\310\060\253\353\216\124\342\334\255 \110\317\331\075\054\376\122\065\045\070\025\200\103\231\276\146\374\153\105\114\175\205\144\120\112\270\041\040\232\240\126\241\350\263\377\305\125\121\020\075\340\244\377\001\213\172\115\140\024\062\100\071\330\041\121\064\034\264\314\254\377\144\112\122\355\377\071\323\260\056\300\210\205\066\077\041\242\141\057\105\355\140\141\176\135\044\317\145\250\322\233\120\055\237\262\155\346\236\373\071\244\340\052\022\337\263\320\026\254\262\214\077\141\333\355\012\201\040\005\306\357\300\102\075\200\271\100\331 +\036\235\376\266\127\040\325\266\307\370\200\054\264\351\374\360 \060\162\120\127\165\207\305\111\357\232\177\330\264\132\135\173\374\161\153\311\136\304\050\035\251\064\061\166\224\336\332\056\221\301\003\257\112\362\331\007\306\052\342\235\036\305\202\333\273\007\062\353\046\114\341\077\275\312\226\116\125\137\155\347\065\053\374\360\364\350\136\047\061\155\032\360\375\324\207\355\307\233\156\205\327\075\032\372\024\026\325\026\107\056\066\101\171\202\304\247\201\115\302\244\352\131\011\174\276\073\141\106\127\317\135\300\150\204\022\311\002\336\312\176\226\002\163\156 \311\237\252\002\244\316\233\172\356\115\360\043\151\165\245\364\263\137\112\142\062\204\317\212\177\035\047\314\023\342\056\027\024\161\276\332\114\035\224\131\276\061\257\314\343\267\014\111\207\124\134\052\114\035\210\161\124\137\125\203\112\336\054\270\021\064\335\332\264\144\347\004\054\230\013\343\072\307\320\335\356\154\124\005\177\110\215\003\111\060\116\162\164\051\241\025\206\074\077\305\322\201\366\322\262\230\023\167\306\131\275\211\047\056\346\146\324\063\155\001\170\267\154\352\217\051\321\146 +\055\216\067\377\325\005\144\175\032\234\015\226\105\236\170\042 \117\072\321\121\111\033\146\254\245\371\136\012\201\012\110\236\022\043\345\341\056\332\013\062\046\343\021\024\153\307\067\115\020\024\310\045\300\366\125\016\355\215\235\024\373\003\361\003\034\307\376\156\257\162\260\007\201\242\032\067\350\075\361\172\343\072\166\157\121\120\174\033\154\102\054\276\025\116\023\165\336\140\023\045\200\061\202\120\225\032\270\166\365\053\024\220\115\210\132\273\365\214\041\250\051\175\272\035\335\011\317\012\323\344\150\172\054\052\217\234\037\035\266\143\151\156\023\232 \341\137\143\040\331\017\367\370\135\011\071\304\354\303\344\346\162\316\153\147\306\146\165\274\370\124\263\341\026\353\366\304\346\147\341\057\337\043\040\257\021\331\356\057\367\343\365\152\375\231\364\116\350\251\033\305\114\354\322\374\326\155\312\110\327\044\026\256\207\146\255\006\351\247\232\255\364\220\356\313\117\177\002\376\307\213\174\241\212\243\334\141\022\040\341\123\017\070\250\020\002\364\002\356\357\044\016\312\037\307\024\355\242\157\012\042\314\004\274\132\275\155\117\026\027\144\314\244 +\250\077\175\212\106\366\014\362\020\214\343\127\046\252\135\177 \211\041\352\173\116\162\034\013\362\227\224\354\245\321\323\054\260\334\170\003\210\330\203\103\174\167\124\000\130\361\017\073\210\312\270\053\320\172\032\146\231\215\112\030\357\172\254\211\150\372\260\266\244\155\255\330\316\107\016\056\362\325\207\330\012\305\176\022\225\333\372\113\241\271\363\016\144\217\064\125\040\255\004\003\340\027\160\133\336\342\143\172\020\336\315\023\302\200\067\335\276\334\351\003\345\017\223\021\206\033\136\175\256\000\142\213\121\045\232\274\312\155\141\247\314\374\024\324 \002\261\320\334\007\007\055\225\202\372\273\202\173\233\333\126\215\251\265\152\173\260\172\101\250\124\024\034\160\324\037\065\372\016\006\240\042\041\053\102\055\263\321\371\211\267\075\016\133\206\341\141\170\207\216\316\036\055\274\214\215\334\225\326\054\342\217\070\025\126\055\131\070\171\262\014\337\076\315\262\174\270\110\362\201\231\174\350\222\162\074\151\367\355\311\030\150\061\317\320\102\220\335\026\107\041\177\254\371\362\355\211\233\123\207\076\376\356\033\326\126\075\111\146\055\007\116\220