chroma/lexers/testdata/python2/test_complex_file1.expected
2025-03-22 20:46:00 +13:00

2082 lines
81 KiB
Text

[
{"type":"CommentHashbang","value":"#! /usr/bin/env python"},
{"type":"Text","value":"\n"},
{"type":"CommentSingle","value":"# From CPython (Lib/base64.py)"},
{"type":"Text","value":"\n\n"},
{"type":"LiteralStringDouble","value":"\"\"\"RFC 3548: Base16, Base32, Base64 Data Encodings\"\"\""},
{"type":"Text","value":"\n\n"},
{"type":"CommentSingle","value":"# Modified 04-Oct-1995 by Jack Jansen to use binascii module"},
{"type":"Text","value":"\n"},
{"type":"CommentSingle","value":"# Modified 30-Dec-2003 by Barry Warsaw to add full RFC 3548 support"},
{"type":"Text","value":"\n\n"},
{"type":"KeywordNamespace","value":"import"},
{"type":"Text","value":" "},
{"type":"NameNamespace","value":"re"},
{"type":"Text","value":"\n"},
{"type":"KeywordNamespace","value":"import"},
{"type":"Text","value":" "},
{"type":"NameNamespace","value":"struct"},
{"type":"Text","value":"\n"},
{"type":"KeywordNamespace","value":"import"},
{"type":"Text","value":" "},
{"type":"NameNamespace","value":"string"},
{"type":"Text","value":"\n"},
{"type":"KeywordNamespace","value":"import"},
{"type":"Text","value":" "},
{"type":"NameNamespace","value":"binascii"},
{"type":"Text","value":"\n\n\n"},
{"type":"Name","value":"__all__"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"["},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Legacy interface exports traditional RFC 1521 Base64 encodings"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringSingle","value":"'encode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'decode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'encodestring'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'decodestring'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Generalized interface for other encodings"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringSingle","value":"'b64encode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'b64decode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'b32encode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'b32decode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralStringSingle","value":"'b16encode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'b16decode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Standard Base64 encoding"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringSingle","value":"'standard_b64encode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'standard_b64decode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Some common Base64 alternatives. As referenced by RFC 3458, see thread"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# starting at:"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"#"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# http://zgp.org/pipermail/p2p-hackers/2001-September/000316.html"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringSingle","value":"'urlsafe_b64encode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'urlsafe_b64decode'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n\n"},
{"type":"Name","value":"_translation"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"["},
{"type":"NameBuiltin","value":"chr"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"_x"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Keyword","value":"for"},
{"type":"Text","value":" "},
{"type":"Name","value":"_x"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"in"},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"range"},
{"type":"Punctuation","value":"("},
{"type":"LiteralNumberInteger","value":"256"},
{"type":"Punctuation","value":")]"},
{"type":"Text","value":"\n"},
{"type":"Name","value":"EMPTYSTRING"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"''"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"_translate"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"altchars"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"translation"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"_translation"},
{"type":"Punctuation","value":"[:]"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"for"},
{"type":"Text","value":" "},
{"type":"Name","value":"k"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"v"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"in"},
{"type":"Text","value":" "},
{"type":"Name","value":"altchars"},
{"type":"Operator","value":"."},
{"type":"Name","value":"items"},
{"type":"Punctuation","value":"():"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"translation"},
{"type":"Punctuation","value":"["},
{"type":"NameBuiltin","value":"ord"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"k"},
{"type":"Punctuation","value":")]"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"v"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Operator","value":"."},
{"type":"Name","value":"translate"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"''"},
{"type":"Operator","value":"."},
{"type":"Name","value":"join"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"translation"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n\n\n\f\n"},
{"type":"CommentSingle","value":"# Base64 encoding/decoding uses binascii"},
{"type":"Text","value":"\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"b64encode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"altchars"},
{"type":"Operator","value":"="},
{"type":"NameBuiltinPseudo","value":"None"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Encode a string using Base64.\n\n s is the string to encode. Optional altchars must be a string of at least\n length 2 (additional characters are ignored) which specifies an\n alternative alphabet for the '+' and '/' characters. This allows an\n application to e.g. generate url or filesystem safe Base64 strings.\n\n The encoded string is returned.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Strip off the trailing newline"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"encoded"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"b2a_base64"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"altchars"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"is"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"not"},
{"type":"Text","value":" "},
{"type":"NameBuiltinPseudo","value":"None"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"encoded"},
{"type":"Operator","value":"."},
{"type":"Name","value":"translate"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"string"},
{"type":"Operator","value":"."},
{"type":"Name","value":"maketrans"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringAffix","value":"b"},
{"type":"LiteralStringSingle","value":"'+/'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"altchars"},
{"type":"Punctuation","value":"[:"},
{"type":"LiteralNumberInteger","value":"2"},
{"type":"Punctuation","value":"]))"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"encoded"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"b64decode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"altchars"},
{"type":"Operator","value":"="},
{"type":"NameBuiltinPseudo","value":"None"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Decode a Base64 encoded string.\n\n s is the string to decode. Optional altchars must be a string of at least\n length 2 (additional characters are ignored) which specifies the\n alternative alphabet used instead of the '+' and '/' characters.\n\n The decoded string is returned. A TypeError is raised if s is\n incorrectly padded. Characters that are neither in the normal base-64\n alphabet nor the alternative alphabet are discarded prior to the padding\n check.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"altchars"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"is"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"not"},
{"type":"Text","value":" "},
{"type":"NameBuiltinPseudo","value":"None"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Operator","value":"."},
{"type":"Name","value":"translate"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"string"},
{"type":"Operator","value":"."},
{"type":"Name","value":"maketrans"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"altchars"},
{"type":"Punctuation","value":"[:"},
{"type":"LiteralNumberInteger","value":"2"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'+/'"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"try"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"a2b_base64"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"except"},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"Error"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"msg"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Transform this exception for consistency"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"raise"},
{"type":"Text","value":" "},
{"type":"NameException","value":"TypeError"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"msg"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"standard_b64encode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Encode a string using the standard Base64 alphabet.\n\n s is the string to encode. The encoded string is returned.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"b64encode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"standard_b64decode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Decode a string encoded with the standard Base64 alphabet.\n\n Argument s is the string to decode. The decoded string is returned. A\n TypeError is raised if the string is incorrectly padded. Characters that\n are not in the standard alphabet are discarded prior to the padding\n check.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"b64decode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n"},
{"type":"Name","value":"_urlsafe_encode_translation"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"string"},
{"type":"Operator","value":"."},
{"type":"Name","value":"maketrans"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringAffix","value":"b"},
{"type":"LiteralStringSingle","value":"'+/'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringAffix","value":"b"},
{"type":"LiteralStringSingle","value":"'-_'"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n"},
{"type":"Name","value":"_urlsafe_decode_translation"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"string"},
{"type":"Operator","value":"."},
{"type":"Name","value":"maketrans"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringAffix","value":"b"},
{"type":"LiteralStringSingle","value":"'-_'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringAffix","value":"b"},
{"type":"LiteralStringSingle","value":"'+/'"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"urlsafe_b64encode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Encode a string using the URL- and filesystem-safe Base64 alphabet.\n\n Argument s is the string to encode. The encoded string is returned. The\n alphabet uses '-' instead of '+' and '_' instead of '/'.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"b64encode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Operator","value":"."},
{"type":"Name","value":"translate"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"_urlsafe_encode_translation"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"urlsafe_b64decode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Decode a string using the URL- and filesystem-safe Base64 alphabet.\n\n Argument s is the string to decode. The decoded string is returned. A\n TypeError is raised if the string is incorrectly padded. Characters that\n are not in the URL-safe base-64 alphabet, and are not a plus '+' or slash\n '/', are discarded prior to the padding check.\n\n The alphabet uses '-' instead of '+' and '_' instead of '/'.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"b64decode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Operator","value":"."},
{"type":"Name","value":"translate"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"_urlsafe_decode_translation"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n\n\n\f\n"},
{"type":"CommentSingle","value":"# Base32 encoding/decoding must be done in Python"},
{"type":"Text","value":"\n"},
{"type":"Name","value":"_b32alphabet"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"{"},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'A'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"9"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'J'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"18"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'S'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"27"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'3'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'B'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"10"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'K'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"19"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'T'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"28"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'4'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"2"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'C'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"11"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'L'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"20"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'U'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"29"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'5'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"3"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'D'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"12"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'M'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"21"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'V'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"30"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'6'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"4"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'E'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"13"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'N'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"22"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'W'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"31"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'7'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"5"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'F'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"14"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'O'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"23"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'X'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"6"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'G'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"15"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'P'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"24"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'Y'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"7"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'H'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"16"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'Q'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"25"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'Z'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"LiteralNumberInteger","value":"8"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'I'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"17"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'R'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"26"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'2'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":"\n "},
{"type":"Punctuation","value":"}"},
{"type":"Text","value":"\n\n"},
{"type":"Name","value":"_b32tab"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"_b32alphabet"},
{"type":"Operator","value":"."},
{"type":"Name","value":"items"},
{"type":"Punctuation","value":"()"},
{"type":"Text","value":"\n"},
{"type":"Name","value":"_b32tab"},
{"type":"Operator","value":"."},
{"type":"Name","value":"sort"},
{"type":"Punctuation","value":"()"},
{"type":"Text","value":"\n"},
{"type":"Name","value":"_b32tab"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"["},
{"type":"Name","value":"v"},
{"type":"Text","value":" "},
{"type":"Keyword","value":"for"},
{"type":"Text","value":" "},
{"type":"Name","value":"k"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"v"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"in"},
{"type":"Text","value":" "},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n"},
{"type":"Name","value":"_b32rev"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"dict"},
{"type":"Punctuation","value":"([("},
{"type":"Name","value":"v"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"long"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"k"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":" "},
{"type":"Keyword","value":"for"},
{"type":"Text","value":" "},
{"type":"Name","value":"k"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"v"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"in"},
{"type":"Text","value":" "},
{"type":"Name","value":"_b32alphabet"},
{"type":"Operator","value":"."},
{"type":"Name","value":"items"},
{"type":"Punctuation","value":"()])"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"b32encode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Encode a string using Base32.\n\n s is the string to encode. The encoded string is returned.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Name","value":"parts"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"[]"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"quanta"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"divmod"},
{"type":"Punctuation","value":"("},
{"type":"NameBuiltin","value":"len"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"),"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"5"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Pad the last quantum with zero bits if necessary"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'"},
{"type":"LiteralStringEscape","value":"\\0"},
{"type":"LiteralStringSingle","value":"'"},
{"type":"Text","value":" "},
{"type":"Operator","value":"*"},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"("},
{"type":"LiteralNumberInteger","value":"5"},
{"type":"Text","value":" "},
{"type":"Operator","value":"-"},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"quanta"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"for"},
{"type":"Text","value":" "},
{"type":"Name","value":"i"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"in"},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"range"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"quanta"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# c1 and c2 are 16 bits wide, c3 is 8 bits wide. The intent of this"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# code is to process the 40 bits in units of 5 bits. So we take the 1"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# leftover bit of c1 and tack it onto c2. Then we take the 2 leftover"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# bits of c2 and tack them onto c3. The shifts and masks are intended"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# to give us values of exactly 5 bits in width."},
{"type":"Text","value":"\n "},
{"type":"Name","value":"c1"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"c2"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"c3"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"struct"},
{"type":"Operator","value":"."},
{"type":"Name","value":"unpack"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'!HHB'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"["},
{"type":"Name","value":"i"},
{"type":"Operator","value":"*"},
{"type":"LiteralNumberInteger","value":"5"},
{"type":"Punctuation","value":":("},
{"type":"Name","value":"i"},
{"type":"Operator","value":"+"},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":")"},
{"type":"Operator","value":"*"},
{"type":"LiteralNumberInteger","value":"5"},
{"type":"Punctuation","value":"])"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"c2"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"c1"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u0026"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003c\u003c"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"16"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# 17 bits wide"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"c3"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"c2"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u0026"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"3"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003c\u003c"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"8"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# 10 bits wide"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"parts"},
{"type":"Operator","value":"."},
{"type":"Name","value":"extend"},
{"type":"Punctuation","value":"(["},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"["},
{"type":"Name","value":"c1"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003e\u003e"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"11"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# bits 1 - 5"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"[("},
{"type":"Name","value":"c1"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003e\u003e"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"6"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u0026"},
{"type":"Text","value":" "},
{"type":"LiteralNumberHex","value":"0x1f"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# bits 6 - 10"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"[("},
{"type":"Name","value":"c1"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003e\u003e"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u0026"},
{"type":"Text","value":" "},
{"type":"LiteralNumberHex","value":"0x1f"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# bits 11 - 15"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"["},
{"type":"Name","value":"c2"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003e\u003e"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"12"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# bits 16 - 20 (1 - 5)"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"[("},
{"type":"Name","value":"c2"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003e\u003e"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"7"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u0026"},
{"type":"Text","value":" "},
{"type":"LiteralNumberHex","value":"0x1f"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# bits 21 - 25 (6 - 10)"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"[("},
{"type":"Name","value":"c2"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003e\u003e"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"2"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u0026"},
{"type":"Text","value":" "},
{"type":"LiteralNumberHex","value":"0x1f"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# bits 26 - 30 (11 - 15)"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"["},
{"type":"Name","value":"c3"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003e\u003e"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"5"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# bits 31 - 35 (1 - 5)"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"_b32tab"},
{"type":"Punctuation","value":"["},
{"type":"Name","value":"c3"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u0026"},
{"type":"Text","value":" "},
{"type":"LiteralNumberHex","value":"0x1f"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# bits 36 - 40 (1 - 5)"},
{"type":"Text","value":"\n "},
{"type":"Punctuation","value":"])"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"encoded"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"EMPTYSTRING"},
{"type":"Operator","value":"."},
{"type":"Name","value":"join"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"parts"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Adjust for any leftover partial quanta"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"encoded"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"6"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'======'"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"elif"},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"2"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"encoded"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"4"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'===='"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"elif"},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"3"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"encoded"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"3"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'==='"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"elif"},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"4"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"encoded"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'='"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"encoded"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"b32decode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"casefold"},
{"type":"Operator","value":"="},
{"type":"NameBuiltinPseudo","value":"False"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"map01"},
{"type":"Operator","value":"="},
{"type":"NameBuiltinPseudo","value":"None"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Decode a Base32 encoded string.\n\n s is the string to decode. Optional casefold is a flag specifying whether\n a lowercase alphabet is acceptable as input. For security purposes, the\n default is False.\n\n RFC 3548 allows for optional mapping of the digit 0 (zero) to the letter O\n (oh), and for optional mapping of the digit 1 (one) to either the letter I\n (eye) or letter L (el). The optional argument map01 when not None,\n specifies which letter the digit 1 should be mapped to (when map01 is not\n None, the digit 0 is always mapped to the letter O). For security\n purposes the default is None, so that 0 and 1 are not allowed in the\n input.\n\n The decoded string is returned. A TypeError is raised if s were\n incorrectly padded or if there are non-alphabet characters present in the\n string.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Name","value":"quanta"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"divmod"},
{"type":"Punctuation","value":"("},
{"type":"NameBuiltin","value":"len"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"),"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"8"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"leftover"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"raise"},
{"type":"Text","value":" "},
{"type":"NameException","value":"TypeError"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'Incorrect padding'"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Handle section 2.4 zero and one mapping. The flag map01 will be either"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# False, or the character to map the digit 1 (one) to. It should be"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# either L (el) or I (eye)."},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"map01"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Operator","value":"."},
{"type":"Name","value":"translate"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"string"},
{"type":"Operator","value":"."},
{"type":"Name","value":"maketrans"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringAffix","value":"b"},
{"type":"LiteralStringSingle","value":"'01'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"LiteralStringAffix","value":"b"},
{"type":"LiteralStringSingle","value":"'O'"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+"},
{"type":"Text","value":" "},
{"type":"Name","value":"map01"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"casefold"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Operator","value":"."},
{"type":"Name","value":"upper"},
{"type":"Punctuation","value":"()"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Strip off pad characters from the right. We need to count the pad"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# characters because this will tell us how many null bytes to remove from"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# the end of the decoded string."},
{"type":"Text","value":"\n "},
{"type":"Name","value":"padchars"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"mo"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"re"},
{"type":"Operator","value":"."},
{"type":"Name","value":"search"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'(?P\u003cpad\u003e[=]*)$'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"mo"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"padchars"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"len"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"mo"},
{"type":"Operator","value":"."},
{"type":"Name","value":"group"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'pad'"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"padchars"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003e"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"Name","value":"padchars"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Now decode the full quanta"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"parts"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"[]"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"acc"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"shift"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"35"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"for"},
{"type":"Text","value":" "},
{"type":"Name","value":"c"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"in"},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"val"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"_b32rev"},
{"type":"Operator","value":"."},
{"type":"Name","value":"get"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"c"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"val"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"is"},
{"type":"Text","value":" "},
{"type":"NameBuiltinPseudo","value":"None"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"raise"},
{"type":"Text","value":" "},
{"type":"NameException","value":"TypeError"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'Non-base32 digit found'"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"acc"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+="},
{"type":"Text","value":" "},
{"type":"Name","value":"_b32rev"},
{"type":"Punctuation","value":"["},
{"type":"Name","value":"c"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003c\u003c"},
{"type":"Text","value":" "},
{"type":"Name","value":"shift"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"shift"},
{"type":"Text","value":" "},
{"type":"Operator","value":"-="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"5"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"shift"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003c"},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"parts"},
{"type":"Operator","value":"."},
{"type":"Name","value":"append"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"unhexlify"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'"},
{"type":"LiteralStringInterpol","value":"%010x"},
{"type":"LiteralStringSingle","value":"'"},
{"type":"Text","value":" "},
{"type":"Operator","value":"%"},
{"type":"Text","value":" "},
{"type":"Name","value":"acc"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"acc"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"shift"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"35"},
{"type":"Text","value":"\n "},
{"type":"CommentSingle","value":"# Process the last, partial quanta"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"last"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"unhexlify"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'"},
{"type":"LiteralStringInterpol","value":"%010x"},
{"type":"LiteralStringSingle","value":"'"},
{"type":"Text","value":" "},
{"type":"Operator","value":"%"},
{"type":"Text","value":" "},
{"type":"Name","value":"acc"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"padchars"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"last"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"''"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# No characters"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"elif"},
{"type":"Text","value":" "},
{"type":"Name","value":"padchars"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"last"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"last"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"elif"},
{"type":"Text","value":" "},
{"type":"Name","value":"padchars"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"3"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"last"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"last"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"2"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"elif"},
{"type":"Text","value":" "},
{"type":"Name","value":"padchars"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"4"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"last"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"last"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"3"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"elif"},
{"type":"Text","value":" "},
{"type":"Name","value":"padchars"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"6"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"last"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"last"},
{"type":"Punctuation","value":"[:"},
{"type":"Operator","value":"-"},
{"type":"LiteralNumberInteger","value":"4"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"else"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"raise"},
{"type":"Text","value":" "},
{"type":"NameException","value":"TypeError"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'Incorrect padding'"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"parts"},
{"type":"Operator","value":"."},
{"type":"Name","value":"append"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"last"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"EMPTYSTRING"},
{"type":"Operator","value":"."},
{"type":"Name","value":"join"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"parts"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n\n\f\n"},
{"type":"CommentSingle","value":"# RFC 3548, Base 16 Alphabet specifies uppercase, but hexlify() returns"},
{"type":"Text","value":"\n"},
{"type":"CommentSingle","value":"# lowercase. The RFC also recommends against accepting input case"},
{"type":"Text","value":"\n"},
{"type":"CommentSingle","value":"# insensitively."},
{"type":"Text","value":"\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"b16encode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Encode a string using Base16.\n\n s is the string to encode. The encoded string is returned.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"hexlify"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Operator","value":"."},
{"type":"Name","value":"upper"},
{"type":"Punctuation","value":"()"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"b16decode"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"casefold"},
{"type":"Operator","value":"="},
{"type":"NameBuiltinPseudo","value":"False"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Decode a Base16 encoded string.\n\n s is the string to decode. Optional casefold is a flag specifying whether\n a lowercase alphabet is acceptable as input. For security purposes, the\n default is False.\n\n The decoded string is returned. A TypeError is raised if s is\n incorrectly padded or if there are non-alphabet characters present in the\n string.\n \"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"casefold"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Operator","value":"."},
{"type":"Name","value":"upper"},
{"type":"Punctuation","value":"()"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"re"},
{"type":"Operator","value":"."},
{"type":"Name","value":"search"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'[^0-9A-F]'"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"raise"},
{"type":"Text","value":" "},
{"type":"NameException","value":"TypeError"},
{"type":"Punctuation","value":"("},
{"type":"LiteralStringSingle","value":"'Non-base16 digit found'"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"unhexlify"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n\n\f\n"},
{"type":"CommentSingle","value":"# Legacy interface. This code could be cleaned up since I don't believe"},
{"type":"Text","value":"\n"},
{"type":"CommentSingle","value":"# binascii has any line length limitations. It just doesn't seem worth it"},
{"type":"Text","value":"\n"},
{"type":"CommentSingle","value":"# though."},
{"type":"Text","value":"\n\n"},
{"type":"Name","value":"MAXLINESIZE"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralNumberInteger","value":"76"},
{"type":"Text","value":" "},
{"type":"CommentSingle","value":"# Excluding the CRLF"},
{"type":"Text","value":"\n"},
{"type":"Name","value":"MAXBINSIZE"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"MAXLINESIZE"},
{"type":"Operator","value":"//"},
{"type":"LiteralNumberInteger","value":"4"},
{"type":"Punctuation","value":")"},
{"type":"Operator","value":"*"},
{"type":"LiteralNumberInteger","value":"3"},
{"type":"Text","value":"\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"encode"},
{"type":"Punctuation","value":"("},
{"type":"NameBuiltin","value":"input"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"output"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Encode a file.\"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"while"},
{"type":"Text","value":" "},
{"type":"NameBuiltinPseudo","value":"True"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"input"},
{"type":"Operator","value":"."},
{"type":"Name","value":"read"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"MAXBINSIZE"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"not"},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"break"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"while"},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"len"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Operator","value":"\u003c"},
{"type":"Text","value":" "},
{"type":"Name","value":"MAXBINSIZE"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"ns"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"input"},
{"type":"Operator","value":"."},
{"type":"Name","value":"read"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"MAXBINSIZE"},
{"type":"Operator","value":"-"},
{"type":"NameBuiltin","value":"len"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"not"},
{"type":"Text","value":" "},
{"type":"Name","value":"ns"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"break"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+="},
{"type":"Text","value":" "},
{"type":"Name","value":"ns"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"line"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"b2a_base64"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"output"},
{"type":"Operator","value":"."},
{"type":"Name","value":"write"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"line"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"decode"},
{"type":"Punctuation","value":"("},
{"type":"NameBuiltin","value":"input"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"output"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Decode a file.\"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"while"},
{"type":"Text","value":" "},
{"type":"NameBuiltinPseudo","value":"True"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"line"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"input"},
{"type":"Operator","value":"."},
{"type":"Name","value":"readline"},
{"type":"Punctuation","value":"()"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"not"},
{"type":"Text","value":" "},
{"type":"Name","value":"line"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"break"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"a2b_base64"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"line"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"output"},
{"type":"Operator","value":"."},
{"type":"Name","value":"write"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"encodestring"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Encode a string into multiple lines of base-64 data.\"\"\""},
{"type":"Text","value":"\n "},
{"type":"Name","value":"pieces"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Punctuation","value":"[]"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"for"},
{"type":"Text","value":" "},
{"type":"Name","value":"i"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"in"},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"range"},
{"type":"Punctuation","value":"("},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"len"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"),"},
{"type":"Text","value":" "},
{"type":"Name","value":"MAXBINSIZE"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"chunk"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"["},
{"type":"Name","value":"i"},
{"type":"Text","value":" "},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"Name","value":"i"},
{"type":"Text","value":" "},
{"type":"Operator","value":"+"},
{"type":"Text","value":" "},
{"type":"Name","value":"MAXBINSIZE"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"pieces"},
{"type":"Operator","value":"."},
{"type":"Name","value":"append"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"b2a_base64"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"chunk"},
{"type":"Punctuation","value":"))"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"LiteralStringDouble","value":"\"\""},
{"type":"Operator","value":"."},
{"type":"Name","value":"join"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"pieces"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"decodestring"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":"):"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Decode a string.\"\"\""},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":" "},
{"type":"Name","value":"binascii"},
{"type":"Operator","value":"."},
{"type":"Name","value":"a2b_base64"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n\n\f\n"},
{"type":"CommentSingle","value":"# Useable as a script..."},
{"type":"Text","value":"\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"test"},
{"type":"Punctuation","value":"():"},
{"type":"Text","value":"\n "},
{"type":"LiteralStringDouble","value":"\"\"\"Small test program\"\"\""},
{"type":"Text","value":"\n "},
{"type":"KeywordNamespace","value":"import"},
{"type":"Text","value":" "},
{"type":"NameNamespace","value":"sys"},
{"type":"Operator","value":","},
{"type":"Text","value":" "},
{"type":"NameNamespace","value":"getopt"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"try"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"opts"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"args"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"getopt"},
{"type":"Operator","value":"."},
{"type":"Name","value":"getopt"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"sys"},
{"type":"Operator","value":"."},
{"type":"Name","value":"argv"},
{"type":"Punctuation","value":"["},
{"type":"LiteralNumberInteger","value":"1"},
{"type":"Punctuation","value":":],"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'deut'"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"except"},
{"type":"Text","value":" "},
{"type":"Name","value":"getopt"},
{"type":"Operator","value":"."},
{"type":"Name","value":"error"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"msg"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"sys"},
{"type":"Operator","value":"."},
{"type":"Name","value":"stdout"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"sys"},
{"type":"Operator","value":"."},
{"type":"Name","value":"stderr"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"print"},
{"type":"Text","value":" "},
{"type":"Name","value":"msg"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"print"},
{"type":"Text","value":" "},
{"type":"LiteralStringDouble","value":"\"\"\"usage: "},
{"type":"LiteralStringInterpol","value":"%s"},
{"type":"LiteralStringDouble","value":" [-d|-e|-u|-t] [file|-]\n -d, -u: decode\n -e: encode (default)\n -t: encode and decode string 'Aladdin:open sesame'\"\"\""},
{"type":"Operator","value":"%"},
{"type":"Name","value":"sys"},
{"type":"Operator","value":"."},
{"type":"Name","value":"argv"},
{"type":"Punctuation","value":"["},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"sys"},
{"type":"Operator","value":"."},
{"type":"Name","value":"exit"},
{"type":"Punctuation","value":"("},
{"type":"LiteralNumberInteger","value":"2"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"func"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"encode"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"for"},
{"type":"Text","value":" "},
{"type":"Name","value":"o"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"a"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"in"},
{"type":"Text","value":" "},
{"type":"Name","value":"opts"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"o"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'-e'"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"Name","value":"func"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"encode"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"o"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'-d'"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"Name","value":"func"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"decode"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"o"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'-u'"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"Name","value":"func"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"decode"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"o"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'-t'"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":" "},
{"type":"Name","value":"test1"},
{"type":"Punctuation","value":"();"},
{"type":"Text","value":" "},
{"type":"Keyword","value":"return"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"Name","value":"args"},
{"type":"Text","value":" "},
{"type":"OperatorWord","value":"and"},
{"type":"Text","value":" "},
{"type":"Name","value":"args"},
{"type":"Punctuation","value":"["},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Punctuation","value":"]"},
{"type":"Text","value":" "},
{"type":"Operator","value":"!="},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'-'"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"with"},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"open"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"args"},
{"type":"Punctuation","value":"["},
{"type":"LiteralNumberInteger","value":"0"},
{"type":"Punctuation","value":"],"},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'rb'"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":" "},
{"type":"Keyword","value":"as"},
{"type":"Text","value":" "},
{"type":"Name","value":"f"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"func"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"f"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"sys"},
{"type":"Operator","value":"."},
{"type":"Name","value":"stdout"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"else"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"func"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"sys"},
{"type":"Operator","value":"."},
{"type":"Name","value":"stdin"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"Name","value":"sys"},
{"type":"Operator","value":"."},
{"type":"Name","value":"stdout"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"def"},
{"type":"Text","value":" "},
{"type":"NameFunction","value":"test1"},
{"type":"Punctuation","value":"():"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s0"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"LiteralStringDouble","value":"\"Aladdin:open sesame\""},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s1"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"encodestring"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s0"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"s2"},
{"type":"Text","value":" "},
{"type":"Operator","value":"="},
{"type":"Text","value":" "},
{"type":"Name","value":"decodestring"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s1"},
{"type":"Punctuation","value":")"},
{"type":"Text","value":"\n "},
{"type":"Keyword","value":"print"},
{"type":"Text","value":" "},
{"type":"Name","value":"s0"},
{"type":"Punctuation","value":","},
{"type":"Text","value":" "},
{"type":"NameBuiltin","value":"repr"},
{"type":"Punctuation","value":"("},
{"type":"Name","value":"s1"},
{"type":"Punctuation","value":"),"},
{"type":"Text","value":" "},
{"type":"Name","value":"s2"},
{"type":"Text","value":"\n\n\n"},
{"type":"Keyword","value":"if"},
{"type":"Text","value":" "},
{"type":"NameVariableMagic","value":"__name__"},
{"type":"Text","value":" "},
{"type":"Operator","value":"=="},
{"type":"Text","value":" "},
{"type":"LiteralStringSingle","value":"'__main__'"},
{"type":"Punctuation","value":":"},
{"type":"Text","value":"\n "},
{"type":"Name","value":"test"},
{"type":"Punctuation","value":"()"},
{"type":"Text","value":"\n"}
]